如何使用bash find命令查找多个文件名?
$ find /path/* -type f -name pattern
模式应与文件名列表匹配:
我尝试了
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]'
答案 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,这对我来说已经足够了。