使用 find 指令和通配符進行內部擴充

使用 find 指令和通配符進行內部擴充

我仍在學習命令行,並且在完全理解 find 命令中通配符的使用方面遇到一些困難。

我正在目錄 user/temp 中工作,並使用如下 find 命令來查找所有 .txt 檔案:

find . -name *.txt -print

這給了我錯誤:

find: unknown primary or operator.

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

我讀到您必須轉義*以便find在內部進行擴展。我很困惑,因為我認為使用單引號會使*命令列不會將其解釋為特殊字符,那麼擴展是如何發生的呢?

答案1

這裡有兩個部分可以嘗試擴展*:呼叫時findfind處理/使用其參數時的 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)

相關內容