Shell

使用 find 命令和萬用字元進行內部擴展

  • November 1, 2015

我仍在學習命令行,在完全理解 find 命令中萬用字元的使用時遇到了一些麻煩。

我在目錄 user/temp 中工作,並使用以下 find 命令查找所有 .txt 文件:

find . -name *.txt -print

這給了我錯誤:

find: unknown primary or operator.

我知道您需要在周圍使用單引號*.txt以逃避擴展並獲得所需的結果;但是,我不明白為什麼需要這樣做。

我讀到你必須逃避,*這樣find才能在內部進行擴展。我很困惑,因為我認為使用單引號*會使命令行不會將其解釋為特殊字元,那麼擴展是如何發生的呢?

這裡有兩個部分可以嘗試擴展*:shell 在呼叫時findfind在處理/使用其參數時。

如果你不單引號它,shell 將擴展它,所以如果你在目前目錄中有 a.txt 和 b.txt 你的命令行將從

find . -name *.txt -print

find . -name a.txt b.txt -print

這不是一個有效的find命令

如果你單引號它,你會告訴shell不要管它,所以find會得到字元串*.txt作為參數-name,它會在匹配潛在名稱時使用它。

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