fx
Operatö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ı 1
görüntü daha büyük olması 400x400
ve 0
bunun eşit veya küçükse 400x400
...
(Hiçbir satırsonu / boşluk / sekmeler vb) kullanabilirdin aklı başında dosyaları isimleri varsayarsak identify
ya ö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, find
yalnı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 zsh
kullanıcıysanız bu yanıta da bakınız .