如何在所有子目錄中建立相同的檔案?

如何在所有子目錄中建立相同的檔案?

我有許多現有的子目錄,例如:

/path/to/my/subs/a
/path/to/my/subs/b
/path/to/my/subs/c

不,我想在每個文件中建立一個新文件。檔案名稱是不變的,例如:

/path/to/my/subs/a/foo.md
/path/to/my/subs/b/foo.md
/path/to/my/subs/c/foo.md

我該怎麼做呢?我希望touch /path/to/my/subs/*/foo.md能做到,但它說touch: /path/to/my/subs/*/foo.md: No such file or directory

答案1

假設您用作bashshell,然後使用大括號擴展。

touch /path/to/my/subs/{a,b,c}/foo.md

答案2

您可以使用該find實用程式:

find /path/to/my/subs -type d -links 2 -exec touch "{}/foo.md" \;

這將從 subs 開始遍歷整個樹,找到葉(終端)目錄,並在那裡觸摸 foo md 檔案。

您也可以省略“-exec”...部分並用於xargs在最後一起建立文件,產生更少的touch二進位文件,或使用單點觸控:

touch $( find /path/to/my/subs -type d -links 2 | sed -e 's#$#/foo.md#g' )

find部分將獲取目錄,sed將它們轉換為適當的檔案名稱。

如果您有單層目錄:

對於 /path/to/my/subs/* 中的目錄;觸碰 $dir/foo.md ;完畢

相關內容