在Bash中查找与多个模式匹配的文件

3
我在尝试寻找以以下任意一个表达式结尾的文件:
"00.png"、 "25.png"、 "50.png" 或 "75.png"
我正在使用命令:
find . -type f -name '(*00.png|*25.png|*50.png|*75.png)'

一直没有成功,正确的方法是什么?

2个回答

3

不使用任何正则表达式,您可以使用以下方法:

find . -name '*[05]0.png' -o -name '*[27]5.png'

如果您真的热衷于使用正则表达式,则可以使用这个gnu find 命令:
find . -regextype egrep -regex '.*/([05]0|[27]5)\.png$'

嗨,Anu,谢谢你的回答。我尝试了你的命令,但对我没有用。 - S. Feunmajer
1
第一个解决方案缺少最初的星号。尝试使用find . -name '*[05]0.png' -o -name '*[27]5.png' - William Pursell
谢谢@WilliamPursell,我只在当前目录下进行了测试。我已经在通配符中添加了* - anubhava

2
您可以使用find命令的regex选项:
find . -type f -regextype posix-extended -regex '(.*00\.png|.*25\.png|.*50\.png|.*75\.png)'

这个正则表达式也会匹配 100.png425.png - anubhava

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接