适用于 JavaScript 的正则表达式不适用于 bash
Regex which works in JavaScript not working in 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)。
如果您的文件名不包含@,否则,您可以使用:
find . -regex '.*/[^@]*\.png'
在-regex
之前使用-not
作为参数并消除负前瞻:
find . -not -regex ".*@[23]x\.png"
我正在编写一个脚本来删除 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)。
如果您的文件名不包含@,否则,您可以使用:
find . -regex '.*/[^@]*\.png'
在-regex
之前使用-not
作为参数并消除负前瞻:
find . -not -regex ".*@[23]x\.png"