shell find命令的正则表达式中的组不起作用

e7arh2l6  于 2023-08-07  发布在  Shell
关注(0)|答案(1)|浏览(113)

我想在一个目录中找到扩展名为.png和.jpg的所有文件,但当我尝试使用正则表达式中的组匹配器搜索两个扩展名时,它什么也找不到。
“find”命令不支持组吗?还是我使用它们的方式不对?我使用https://regex101.com/来测试下面的表达式,它给了我预期的结果。
我尝试了find ./assets -regex '.*\.(png|jpg)'命令,但这并不显示任何文件。
如果我用

find ./assets -regex '.*\.png'
find ./assets -regex '.*\.jpg'

字符串
它找到我搜索的所有文件,但我需要它在一个命令。
我也,只是为了测试的目的,尝试了find ./assets -regex '.*\.(.*)'也发现没有一个文件。加上-regextype posix-extended会产生错误。
例如,它应该匹配:

./assets/image.png
./assets/subdir/image2.png
./assets/image3.jpg


还有一些JSON文件不应该匹配,例如:

./assets/image.json
./assets/subdir/image2.json


不知道这是否相关,但我在MacBook上使用zsh终端。

omtl5h9j

omtl5h9j1#

正如第一条评论所说,我错过了使用扩展(现代)正则表达式的-E选项。

find -E ./assets -regex '.*\.(png|jpg)'

字符串

相关问题