在不存在的子目录中创建文件 (../new_folder/new_folder/new_file.ext)

在不存在的子目录中创建文件 (../new_folder/new_folder/new_file.ext)

现在我用这个:

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

永远为我工作。

相关内容