Bash:文件匹配模式适用于Ubuntu但不适用于OS X.

时间:2016-06-20 10:17:36

标签: regex bash

假设我的目录中有以下两个文件

- test.yaml
- test.yml

在Ubuntu上,以下bash命令列出了两个文件:

$ find .  -regex '.*\.ya?ml'
./test.yaml
./test.yml

但是,在OS X上,相同的命令不会列出任何文件:

$ find .  -regex '.*\.ya?ml' 

我的问题是,可以传递给-regex param的正则表达式模式是什么,因此该命令可以在两个平台上运行?

1 个答案:

答案 0 :(得分:3)

OSX上提供的

find需要-E来支持扩展正则表达式。在OSX上将起作用:

find -E .  -regex '.*\.ya?ml'

以下内容也适用于OSX,无需扩展正则表达式:

find .  -regex '.*\.ya\{0,1\}ml'

编辑:如果您希望两个系统都使用通用find,请使用:

find .  -regex '.*\.ya*ml'