Bash
在命令行上給定模式時發現不遞歸
想像一個原始碼樹。到處都有xml文件。
但由於這棵樹的根目錄有一個 XYZ.xml,它不會找到我的 xml 文件。
find -iname *.xml
返回
./XYZ.xml
代替
./XYZ.xml ./a/b/c/bob.xml ./b/d/top.xml
find -iname '*.xml'
否則,您的 shell 將擴展
*.xml
為XYZ.xml
,並且實際執行的命令是find -iname XYZ.xml
如果目前目錄中沒有 XML 文件,它會起作用的原因是,如果萬用字元不匹配任何內容,shell 通常不會擴展萬用字元。通常,任何時候您希望通過 shell 以外的程序擴展萬用字元(例如,通過
find
、tar
、scp
等),您需要引用它們,這樣 shell 就不會嘗試自行擴展它們。
您需要像這樣引用您的論點:
find ./ -name '*.xml'
這樣它就被傳遞給 find 而不是被 shell 擴展,然後作為擴展版本傳遞給 find。