尋找檔案名稱中帶有星號 (*) 的文件

尋找檔案名稱中帶有星號 (*) 的文件

如何查找檔案名稱中帶有星號的檔案?提出問題的另一種方式是,如何讓星號不充當通配符?

通常對於通配符我會這樣:

$ find ./ -type f \( -iname \*.jpg \)

如果我不逃避,*我會得到以下結果

$ find ./ -type f \( -iname * \)
find: paths must precede expression: .....
find: possible unquoted pattern after predicate `-iname'?

由於錯誤表明*需要引用我已經嘗試過的find ./ -type f \( -iname "*" \)find ./ -type f \( -iname '*' \)但這也可以用作通配符。

答案1

正確的解決方案似乎是使用方括號[ ]。當然,我在發布後 5 分鐘就解決了它。我希望這對將來的人有幫助。

$ find . -name '*[*]*' -type f

雖然也可以使用反斜線來轉義*forfind

$ find . -name '*\**' -type f

單引號用於確定*[\失去它們也具有的特殊意義貝殼

答案2

當心。 find(1) 抱怨的是完全不同的事。假設當前目錄中有文件a, b, c.如果您致電例如:

find ./ -type f \( -iname * \)

得到find的是./ -type f ( -iname a b c )(shell 在將生成的命令行交給它之前擴展 '*',括號被引用;與 完全相同的結果***)。如果你寫:

find ./ -type f \( -iname \* \)

它得到./ -type f ( -iname * )

相關內容