查找文件名中带有星号 (*) 的文件

查找文件名中带有星号 (*) 的文件

如何查找文件名中带有星号的文件?提出问题的另一种方式是,如何让星号不充当通配符?

通常对于通配符我会这样:

$ 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 * )

相关内容