如何让像 (foo|bar) 这样的正则表达式"或组"与 find -regex 一起工作?(操作系统 X)



假设我想找到所有.jpg和.png images,使用正则示例,我正在尝试:

find . -regex ".*.(jpg|png)"

但是它不起作用(即使存在JPG和PNG文件,也没有结果)。

现在,如果而不是(jpg|png)部分I仅使用jpgpng,则可以正常工作。另外,如果我使用(jpg),它确实会找到.jpg文件,因此显然我必须逃脱括号(不确定为什么)。但是我无法获得" jpg或png"的工作,逃脱了|符号(因此在我的正则使用(jpg|png))也无法正常工作。

fyi:我正在OS X Yosemite上使用find

在OSX find上使用-E选项,以启用扩展正则表达式:

find -E . -regex ".*.(jpg|png)"

根据man find

-E 
   Interpret regular expressions followed by -regex and -iregex primaries as extended 
   (modern) regular expressions rather than basic regular expressions (BRE's).

最新更新