我正在尝试对一个非常大的图像路径运行ImageMagick identify命令,其中Identify返回与模式匹配的文件的图像尺寸。我尝试匹配的模式是:
/jewelclub_[a-z0-9]{1,}_(small|medium|large|zoom)\.jpg/当我尝试执行以下两个命令时,第一个命令成功,第二个命令失败,这似乎是我的RegExp出了问题:
(1): identify -format "%f %w %h %b \n" 'jewelclub_*\.jpg'
(2): identify -format "%f %w %h %b \n" 'jewelclub_[a-z0-9]{1,}_(small|medium|large|zoom)\.jpg'关于如何将命令#2中的PCRE语法更改为兼容的RegEx风格(BRE?在这里?)?
提前感谢你的帮助。
发布于 2012-05-06 23:28:36
您确定identify接受正则表达式作为文件参数吗?
如何解决这个问题,将正则表达式传递给find,然后通过管道传递给xargs
find -E . -regex "./jewelclub_[a-z0-9]{1,}_(small|medium|large|zoom)\.jpg" |\
xargs identify -format "%f %w %h %b \n"发布于 2012-11-02 10:07:39
我不知道identify是如何工作的,但我可以确认您使用的正则表达式:
jewelclub_[a-z0-9]{1,}_(small|medium|large|zoom)\.jpg使用正确的ERE语法。
要使其符合BRE标准,这是很棘手的,因为BRE不支持(...|...|..)语法。如果您需要使用BRE,我将使用identify遍历每个案例,然后合并结果:
jewelclub_[a-z0-9]\{1,\}_small\.jpg
jewelclub_[a-z0-9]\{1,\}_medium\.jpg
jewelclub_[a-z0-9]\{1,\}_large\.jpg
jewelclub_[a-z0-9]\{1,\}_zoom\.jpg或者我会让BRE中的事情变得更简单:
jewelclub_[a-z0-9]\{1,\}_[smlz][[:alpha:]]\{3,5}\.jpg请参阅POSIX RegEx Standard。
https://stackoverflow.com/questions/10471362
复制相似问题