आप भी fxऊंचाई / चौड़ाई के आधार पर छवियों को फ़िल्टर करने के लिए ऑपरेटर का उपयोग कर सकते हैं उदा
identify -format '%[fx:(h>400 && w>400)]\n' image.png
1अगर छवि से बड़ा है 400x400और 0अगर यह बराबर है या इससे छोटा है तो आउटपुट होगा 400x400...
मान लें कि फ़ाइल नाम (कोई नया लिंक / स्पेस / टैब आदि नहीं) आप या identifyतो पहले से मौजूद छवि नामों को प्रिंट करने के लिए उपयोग कर सकते हैं 1:या 0:आउटपुट लाइनों को हटाने की प्रक्रिया शुरू 0:कर सकते हैं, 1:जो बाकी लाइनों पर अग्रणी को हटाने और हटाने की प्रक्रिया करते हैं, इसलिए केवल फ़ाइल नाम ही रहते हैं, एक प्रति पंक्ति, फिर उस सूची पर mogrify ... @-( @सिंटैक्स को जोड़ा गया था imagemagick v6.5.2) को पाइप करें :
identify -format '%[fx:(h>400 && w>400)]:%i\n' ./*.png | \
sed '/^1:/!d;//s///' | mogrify -resize '400x400' -- @-
अन्यथा, findआप केवल फ़ाइलों को आकार> 400x400 के साथ मुद्रित कर सकते हैं और फिर परिणाम को xargs+ पर पाइप कर सकते हैं mogrify(यह कम कुशल है क्योंकि यह प्रत्येक फ़ाइल के लिए एक शेल चलाता है लेकिन इसे सभी प्रकार के फ़ाइल नामों के साथ काम करना चाहिए):
find . -maxdepth 1 -type f -name '*.png' -exec sh -c \
'identify -format "%[fx:(h>400 && w>400)]\n" "$0" | grep -q 1' {} \; -print0 \
| xargs -0 mogrify -resize '400x400'
यदि आप एक zshउपयोगकर्ता हैं तो यह उत्तर भी देखें ।