
我仍在學習命令行,並且在完全理解 find 命令中通配符的使用方面遇到一些困難。
我正在目錄 user/temp 中工作,並使用如下 find 命令來查找所有 .txt 檔案:
find . -name *.txt -print
這給了我錯誤:
find: unknown primary or operator.
我知道您需要在 周圍使用單引號,*.txt
以逃避擴展並獲得您想要的結果;但是,我不明白為什麼需要這樣做。
我讀到您必須轉義*
以便find
在內部進行擴展。我很困惑,因為我認為使用單引號會使*
命令列不會將其解釋為特殊字符,那麼擴展是如何發生的呢?
答案1
這裡有兩個部分可以嘗試擴展*
:呼叫時find
或find
處理/使用其參數時的 shell。
如果你不單引號它,shell 將擴展它,所以如果當前目錄中有 a.txt 和 b.txt,你的命令列將從中擴展
find . -name *.txt -print
到
find . -name a.txt b.txt -print
這不是一個有效的find
命令
如果您單引號它,您將告訴 shell 不會理會它,因此find
將獲取該字串*.txt
作為參數-name
,並在匹配潛在名稱時使用它。
答案2
您可以嘗試雙引號檔案名稱。
尋找 。 -名稱“*.txt”-列印
這適用於我的系統(Debian 8)