使用find实用程序匹配多个文件名的模式

时间:2018-02-17 12:07:06

标签: regex find

如何使用bash find命令查找多个文件名?

$ find /path/* -type f -name pattern

模式应与文件名列表匹配:

  • fname1.jpg
  • fname2.png
  • myfile.css
  • example.gif

我尝试了

https://alvinalexander.com/linux-unix/linux-find-multiple-filenames-patterns-command-example 找到多个文件名命令:查找三个文件扩展名

find . -type f \( -name "*cache" -o -name "*xml" -o -name "*html" \)

它有效。

无论如何,我认为使用-name模式会更干净,而不是使用-names列表。

这 $ man find

   -name pattern

我正在寻找类似的东西:-name' [fname2.png | myfile.css | example.gif]'

2 个答案:

答案 0 :(得分:3)

-regex替代方案如下:

find . -type f -regextype posix-egrep -regex ".+\.(jpg|png|css)$"

至于-name选项:

  

-name pattern - 文件名的基础(带有前导的路径)   目录已删除)匹配 shell 模式。

Shell 模式不是一个成熟的正则表达式模式。

答案 1 :(得分:0)

混合它们:

find -name "aoc*" -regextype awk -regex ".*[0-9].(class|scala)"

这将搜索匹配shell-pattern aoc *和end in number的文件,结尾为.class或.scala。

对于你的例子:

find -name "fname*" -regextype awk -regex ".*[0-9].(png|jpg|css)"

可用类型是:

find -regextype -help

但是,我首先尝试使用“-regextype sed”,但是sed本身有选项,可以改变正则表达式的样式。我以前和sed一起使用的模式不起作用,但由于模式适用于awk,这对我来说已经足够了。