fxOperatörü, görüntüleri yükseklik / genişliğe göre filtrelemek için de kullanabilirsiniz.
identify -format '%[fx:(h>400 && w>400)]\n' image.png
irade çıktı 1görüntü daha büyük olması 400x400ve 0bunun eşit veya küçükse 400x400...
(Hiçbir satırsonu / boşluk / sekmeler vb) kullanabilirdin aklı başında dosyaları isimleri varsayarsak identifyya öncesinde görüntü adlarını yazdırmak 1:veya 0:ile başlayan satırları silme çıktıyı işleyecek, 0:ve kaldırma lider 1:dosya adları kalır böylece sadece hatların geri kalanı üzerinde bir ardından bu listeyi ekleyin mogrify ... @-( @sözdizimi eklendi imagemagick v6.5.2):
identify -format '%[fx:(h>400 && w>400)]:%i\n' ./*.png | \
sed '/^1:/!d;//s///' | mogrify -resize '400x400' -- @-
Aksi takdirde, findyalnızca> 400x400 boyutundaki dosyaları yazdırabilir ve ardından sonucu xargs+ olarak işaretleyebilirsiniz mogrify(her dosya için bir kabuk çalıştırdığından daha az verimlidir, ancak her türlü dosya adıyla çalışmalıdır):
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'
Eğer zshkullanıcıysanız bu yanıta da bakınız .