首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >bash shell中ImageMagick "identify“的RegEx语法

bash shell中ImageMagick "identify“的RegEx语法
EN

Stack Overflow用户
提问于 2012-05-06 22:39:22
回答 2查看 784关注 0票数 0

我正在尝试对一个非常大的图像路径运行ImageMagick identify命令,其中Identify返回与模式匹配的文件的图像尺寸。我尝试匹配的模式是:

代码语言:javascript
复制
/jewelclub_[a-z0-9]{1,}_(small|medium|large|zoom)\.jpg/

当我尝试执行以下两个命令时,第一个命令成功,第二个命令失败,这似乎是我的RegExp出了问题:

代码语言:javascript
复制
(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?在这里?)?

提前感谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-06 23:28:36

您确定identify接受正则表达式作为文件参数吗?

如何解决这个问题,将正则表达式传递给find,然后通过管道传递给xargs

代码语言:javascript
复制
find -E . -regex "./jewelclub_[a-z0-9]{1,}_(small|medium|large|zoom)\.jpg" |\
xargs identify -format "%f %w %h %b \n"
票数 2
EN

Stack Overflow用户

发布于 2012-11-02 10:07:39

我不知道identify是如何工作的,但我可以确认您使用的正则表达式:

代码语言:javascript
复制
jewelclub_[a-z0-9]{1,}_(small|medium|large|zoom)\.jpg

使用正确的ERE语法。

要使其符合BRE标准,这是很棘手的,因为BRE不支持(...|...|..)语法。如果您需要使用BRE,我将使用identify遍历每个案例,然后合并结果:

代码语言:javascript
复制
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中的事情变得更简单:

代码语言:javascript
复制
jewelclub_[a-z0-9]\{1,\}_[smlz][[:alpha:]]\{3,5}\.jpg

请参阅POSIX RegEx Standard

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10471362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档