Shell
使用 find 命令和萬用字元進行內部擴展
我仍在學習命令行,在完全理解 find 命令中萬用字元的使用時遇到了一些麻煩。
我在目錄 user/temp 中工作,並使用以下 find 命令查找所有 .txt 文件:
find . -name *.txt -print
這給了我錯誤:
find: unknown primary or operator.
我知道您需要在周圍使用單引號
*.txt
以逃避擴展並獲得所需的結果;但是,我不明白為什麼需要這樣做。我讀到你必須逃避,
*
這樣find
才能在內部進行擴展。我很困惑,因為我認為使用單引號*
會使命令行不會將其解釋為特殊字元,那麼擴展是如何發生的呢?
這裡有兩個部分可以嘗試擴展
*
:shell 在呼叫時find
或find
在處理/使用其參數時。如果你不單引號它,shell 將擴展它,所以如果你在目前目錄中有 a.txt 和 b.txt 你的命令行將從
find . -name *.txt -print
到
find . -name a.txt b.txt -print
這不是一個有效的
find
命令如果你單引號它,你會告訴shell不要管它,所以
find
會得到字元串*.txt
作為參數-name
,它會在匹配潛在名稱時使用它。