Nah, cara termudah untuk melakukan ini adalah menggunakan ImageMagick . Itu harus di repositori distribusi Linux Anda, untuk sistem berbasis debian, jalankan:
sudo apt-get install imagemagick
Salah satu program suite ImageMagick adalah identify
, ini akan mencetak karakteristik daftar file gambar input. Menggabungkannya dengan sort
akan memberi Anda daftar gambar yang diurutkan berdasarkan ukuran (Anda dapat mengubah png untuk ekstensi apa pun yang Anda miliki:
identify *png | sort -gk 3
Jika Anda benar-benar membutuhkan rasio aspek dan bukan hanya ukurannya, cobalah sesuatu seperti ini:
Opsi sederhana, anggap nama gambar Anda tidak memiliki spasi :
identify *png *jpg *gif | \
gawk '{split($3,sizes,"x"); print $1,sizes[1]/sizes[2]}' | \
sed 's/\[.\]//' | sort -gk 3
Perintah gawk membagi bidang ke-3 (ukuran gambar yang memiliki format LxH) ke dalam array "ukuran" dan kemudian mencetak bidang ke-1 (nama gambar) dan hasil membagi panjang gambar dengan tingginya. The sed
perintah hanya mempercantik output dan sort
perintah macam hasil sesuai dengan rasio ukuran gambar.
Lebih kompleks, ini dapat menangani spasi dalam nama file:
find . \( -iname "*png" -o -iname "*jpg" -o -iname "*gif" \) -exec identify {} \; |\
perl -ne '/(.+?)\s+[A-Z]{3}\s+(\d+)x(\d+)/; print "$1 ", $2/$3, "\n"' | \
sort -gk 2
Di sini kita gunakan find
untuk mengidentifikasi file-file yang kita minati dan menjalankan identify
perintah, dan kemudian menyalurkan hasilnya melalui skrip PERL kecil. Ekspresi reguler mencari tiga huruf besar ( [A-Z]{3}
) yang harus berupa format gambar. Setelah kami menemukan itu, mudah untuk mengidentifikasi nama dan dimensi gambar.
Saya tidak menggunakan gawk di sini karena keberadaan spasi di nama file input akan membingungkan nomor bidang. Akhirnya, skrip akan mencetak nama gambar dan hasil pembagian panjang / tinggi yang kita sort
numerik.
Jika hanya menjelajah rasio aspek yang tersedia tidak cukup, jika Anda memiliki setidaknya satu gambar dengan rasio aspek yang diinginkan, cukup gunakan grep untuk mengekstrak gambar-gambar yang rasio terdekatnya:
identify *png *jpg *gif | \
gawk '{split($3,sizes,"x"); print $1,sizes[1]/sizes[2]}' |\
sed 's/\[.\]//' | sort -gk 3 | grep -C 10 GOOD_IMAGE.jpg
identify -format "%[fx:w/h]:%M\n" *.jpg
. Saya tidak tahu bagaimana cara mudah menyortir berdasarkan kedekatan dengan nilai arbitrer.sort
tampaknya tidak mendukung penyortiran semacam itu.