Command-Line

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

  • November 27, 2018

現在我用這個:

mkdir -p a/b/c/d/e; 
touch a/b/c/d/e/file.abc; 

有沒有更有效的方法?

就使用的工具而言:沒有。 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
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

查看install(1)聯機幫助頁;它具有設置權限、保留時間戳等選項。

引用自:https://unix.stackexchange.com/questions/484225