我正在编写一个脚本来删除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上)。
答案 0 :(得分:2)
在-not
之前使用-regex
作为参数,消除负向前瞻:
find . -not -regex ".*@[23]x\.png"
答案 1 :(得分:0)
如果您的文件名不包含@,则可以使用:
find . -regex '.*/[^@]*\.png'