使用-p
(--parents
)选项,mkdir
会根据需要创建父目录。
touch
,vim
或>
可以在bash中创建新文件,但仅限于父目录存在时。
如何在一个命令中创建新文件及其父目录?就像-p
对mkdir
所做的那样
答案 0 :(得分:14)
安装是你的朋友:
install -Dv /dev/null some/new/path/base-filename
答案 1 :(得分:12)
这是一个shell 函数:
mkfileP() { mkdir -p "$(dirname "$1")" || return; touch "$1"; }
# Sample call
mkfileP "./newSubDir/test.txt" && echo 'created or touched' || echo 'failure'
例如,您可以将它放在shell配置文件中。
或者,将其实现为脚本(根据需要添加错误处理和命令行帮助):
#!/usr/bin/env bash
mkdir -p "$(dirname "$1")" || exit
touch "$1"
答案 2 :(得分:0)
我最近为此直接创建了一个脚本:https://gist.github.com/zinovyev/1f8caf9e886de610e2dd2c22a4ef7d69
以下是其工作方式的几个示例:
$ tt foo/bar/file # => Will create a file "/current/path/foo/bar/file"
$ tt foo/bar/dir/ # => Will create a directory "/current/path/foo/bar/dir"
在路径末尾注意/
。这样便可以确定路径的最后一块应该是目录还是文件。