我有許多現有的子目錄,例如:
/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
假設您用作bash
shell,然後使用大括號擴展。
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 ;完畢