Bash

在命令行上給定模式時發現不遞歸

  • August 15, 2020

想像一個原始碼樹。到處都有xml文件。

但由於這棵樹的根目錄有一個 XYZ.xml,它不會找到我的 xml 文件。

find -iname *.xml

返回

./XYZ.xml

代替

./XYZ.xml
./a/b/c/bob.xml
./b/d/top.xml
find -iname '*.xml'

否則,您的 shell 將擴展*.xmlXYZ.xml,並且實際執行的命令是

find -iname XYZ.xml

如果目前目錄中沒有 XML 文件,它會起作用的原因是,如果萬用字元不匹配任何內容,shell 通常不會擴展萬用字元。通常,任何時候您希望通過 shell 以外的程序擴展萬用字元(例如,通過findtarscp等),您需要引用它們,這樣 shell 就不會嘗試自行擴展它們。

您需要像這樣引用您的論點:

find ./ -name '*.xml'

這樣它就被傳遞給 find 而不是被 shell 擴展,然後作為擴展版本傳遞給 find。

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