2012-05-06 11 views
0

ImageMagick identifyコマンドは、パターンに一致するファイルのイメージサイズを返す非常に大きなイメージパスで実行しようとしています。私は次の2つのコマンドを実行しようとすると、ImageMagickのRegEx構文はbashシェル内で "特定"

/jewelclub_[a-z0-9]{1,}_(small|medium|large|zoom)\.jpg/ 

最初は成功し、2番目は私の正規表現に何か問題がなければならないように思われる失敗します:私は一致しようとしているパターンがある

(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?ERE?)に変更する方法についてのアドバイスはありますか?

ご協力いただきありがとうございます。

答えて

2

あなたは確信していますidentifyはファイル引数として正規表現を受け入れますか?私はどのようにidentify作品を知らない、しかし、私はあなたが使用する正規表現することを確認することができます

find -E . -regex "./jewelclub_[a-z0-9]{1,}_(small|medium|large|zoom)\.jpg" |\ 
xargs identify -format "%f %w %h %b \n" 
+2

'find -E' - findのバージョンは?そして、なぜあなたは-execを使うのではなく、xargsを使うのですか? –

+0

あなたは正しいと思いますが、私は 'xargs'にパイプするのではなく' -exec'を使ってください。このmacbook(BSDから派生したもの)の 'find'については、[何が出荷されたのか](http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/find.1.html) 。 – wehal3001

+0

そのトリックはしましたか?ありがとう! – jonaz

0

:どのようにこの回避策について、findにあなたの正規表現を渡し、その後xargsへの配管

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