Anda juga dapat menggunakan fxoperator untuk memfilter gambar berdasarkan tinggi / lebar mis
identify -format '%[fx:(h>400 && w>400)]\n' image.png
akan menampilkan 1jika gambar lebih besar dari 400x400dan 0jika sama atau lebih kecil dari 400x400...
Mengasumsikan nama file waras (tidak ada baris baru / spasi / tab dll) yang dapat Anda gunakan identifyuntuk mencetak nama gambar yang didahului oleh salah satu 1:atau 0:, memproses output menghapus garis yang dimulai dengan 0:dan menghapus baris 1:di sisa baris sehingga hanya nama file yang tersisa, satu per baris, lalu pipa daftar itu ke mogrify ... @-( @sintaks ditambahkan imagemagick v6.5.2):
identify -format '%[fx:(h>400 && w>400)]:%i\n' ./*.png | \
sed '/^1:/!d;//s///' | mogrify -resize '400x400' -- @-
Jika tidak, findAnda hanya dapat mencetak file dengan ukuran> 400x400 dan kemudian mengirimkan hasilnya ke xargs+ mogrify(itu kurang efisien karena menjalankan shell untuk setiap file tetapi harus bekerja dengan semua jenis nama file):
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'
Jika Anda seorang zshpengguna, lihat juga jawaban ini .