我已經編寫了一個腳本(foo),它可以在輸入文件中對文本進行簡單的sed替換。我有一個包含大量子目錄(a/b1,a/b2等)的目錄(a),它們都具有相同的子目錄(c等),幷包含一個具有相同名稱(d)的文件。所以粗略的結構是:在所有子目錄中的特定文件上運行腳本
a/
-b1/
--c/
---d
-b2/
--c/
---d
-b3/
--c/
---d
我想在樹中的每個文件(d)上運行我的腳本。不幸的是,以下不起作用:
sudo sh foo a/*/c/d
如何在bash命令中使用通配符?我是否必須使用find
以及特定的max和mindepth,還是有更優雅的解決方案?
事實上,貌似找到的是你的朋友 – ashawley
你使用'sh'或'bash'? – Cyrus
如果你的bash版本支持,你可以設置'shopt -s globstar',然後嘗試'ls **/d',如果它匹配你所需要的...比你可以使用'sudo sh foo **/d' ..看到[this](http://mywiki.wooledge.org/glob#globstar_.28since_bash_4.0-alpha.29)瞭解更多信息...還請注意'sh'可能與'bash'不一樣 – Sundeep