You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac下find命令-regex与|正则不生效的问题咨询

Mac FreeBSD find 正则语法问题解答

是的,必须添加-E flag才能在Mac的FreeBSD版find中使用(a|b)这类分支匹配的正则语法,原因如下:

  • Mac默认自带的是FreeBSD实现的find,它默认采用基本正则表达式(BRE)。BRE语法里不仅(、)、|需要转义才能生效,更关键的是BRE本身不支持|这种分支匹配逻辑,所以你写的.*\(a\|b\)本质上无法实现“匹配a或b”的效果,自然没有输出。
  • 当添加-E参数后,find会切换为使用扩展正则表达式(ERE),ERE原生支持|分支、()分组这类语法,不需要额外转义(当然转义也不影响),这时候.*(a|b)就能正常匹配文件a和b了。

如果你不想用-E,唯一的替代方案是安装GNU版本的findutils(比如通过Homebrew),GNU find的-regex默认支持ERE语法,但这属于第三方工具,不是系统自带的默认行为。

内容的提问来源于stack exchange,提问作者CAB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 11:42:03