在JavaScript中工作的正则表达式不适用于bash

时间:2015-01-23 17:35:17

标签: regex bash

我正在编写一个脚本来删除iOS设备上某些不需要的图像;这里是一些正在尝试使用正则表达式的文件名的例子。

./Black_0_WifiBars.png
./Black_0_WifiBars@2x.png
./Black_0_WifiBars@3x.png

我有一个正则表达式,我试图用来匹配不以@ 2x.png或@ 3x.png:.*/\w*(?!@[23]x)\.png结尾的png文件。当我在测试器站点(例如http://regexpal.com/)中具有上述示例和前述正则表达式时,这适用于第一个示例。但是,当我尝试在bash中使用它时,像这样:

find . -regex ".*/\w*(?\!@[23]x)\.png"

即使在存在应匹配的文件的目录中也不会产生任何结果。

我是如何格式化正则表达式的问题?我正在使用的东西在bash中不受支持吗? (我在OS X 10.10.1上)。

2 个答案:

答案 0 :(得分:2)

-not之前使用-regex作为参数,消除负向前瞻:

find . -not -regex ".*@[23]x\.png"

答案 1 :(得分:0)

如果您的文件名不包含@,则可以使用:

find . -regex '.*/[^@]*\.png'