现在我用这个:
mkdir -p a/b/c/d/e;
touch a/b/c/d/e/file.abc;
有没有更有效的方法?
答案1
install -D src_file /tmp/a/b/c/d/e/f/g/h/i/dst_file
install -Dt /tmp/a/b/c/d/e/f/g/h/i your_file
如果您只想触摸一个空文件:
install -D /dev/null /tmp/a/b/c/d/e/f/g/h/i/empty_file
看着那(这安装(1)联机帮助页;它具有设置权限、保留时间戳等选项。
答案2
就使用的工具而言:没有。
touch
如果您尝试在不存在的目录中进行操作,并且mkdir
只执行一件事,则会失败(正确地):创建目录, 不正常文件。两项不同的工作需要两种不同的工具。
也就是说,如果您谈论的是脚本中行数或脚本的可读性方面的效率,您可以将其放入一个函数中:
seedfile() {
mkdir -p -- "$(dirname -- "$1")" &&
touch -- "$1"
}
seedfile /path/to/location/one/file.txt
seedfile /path/to/somewhere/else/file.txt
seedfile local/paths/work/too/file.txt
答案3
尝试这个:
mkdir -p a/b/c/d/e && touch "$_"/file.abc
永远为我工作。