0

非常に大きな画像パスでImageMagickidentifyコマンドを実行しようとしています。ここで、Identifyはパターンに一致するファイルの画像サイズを返します。私が一致させようとしているパターンは次のとおりです。

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

次の2つのコマンドを実行しようとすると、最初のコマンドは成功し、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構文を互換性のある正規表現フレーバー(BRE?ERE?)に変更する方法に関するアドバイスはありますか?

助けてくれてありがとう。

4

2 に答える 2

2

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-05-06T15:28:36.260 に答える
0

どのように機能するかはわかりませんが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正規表現標準を参照してください。

于 2012-11-02T02:07:38.843 に答える