MacBook zsh中find命令正则分组匹配png/jpg文件失败问题
解决Mac下find正则分组匹配png/jpg文件的问题
正确命令1:适配BSD find的基本正则语法
Mac自带的find是BSD版本,默认使用基本正则表达式(BRE),分组括号和管道符需要转义,正确的正则写法如下:
find ./assets -regex '.*\.\(png\|jpg\)'
更简单的替代方案:不用正则分组
如果不想纠结正则语法,直接用-o(逻辑或)选项组合两个文件名匹配规则,更直观且不易出错:
find ./assets -name '*.png' -o -name '*.jpg'
问题原因说明
- 你之前测试的
.*\.(png|jpg)是**扩展正则表达式(ERE)**的语法,但BSDfind默认不支持这种写法,且没有-regextype参数(该参数是GNU find的特性),所以添加后会报错。 - 单独匹配
.*\.png能生效,是因为这个表达式没有用到分组,属于BRE兼容的写法。
内容的提问来源于stack exchange,提问作者Alexander Pissinger
相关产品推荐
相关产品推荐

