Bunu yapmanın en kolay yolu ImageMagick kullanmaktır . Debian tabanlı sistemler için Linux dağıtımınızın depolarında olmalıdır:
sudo apt-get install imagemagick
ImageMagick paketinin programlarından biri, identifygiriş görüntü dosyaları listesinin özelliklerini basacaktır. Bunu ile birleştirmek sortsize boyuta göre sıralanmış görüntülerin bir listesini verir (sahip olduğunuz uzantılar için png'yi değiştirebilirsiniz:
identify *png | sort -gk 3
Sadece boyuta değil , en boy oranına gerçekten ihtiyacınız varsa , şöyle bir şey deneyin:
Basit seçenek, resim adlarınızın boşluk içermediğini varsayar :
identify *png *jpg *gif | \
gawk '{split($3,sizes,"x"); print $1,sizes[1]/sizes[2]}' | \
sed 's/\[.\]//' | sort -gk 3
Gawk komutu, 3. alanı (LxH biçimindeki görüntü boyutu) "boyutlar" dizisine böler ve ardından 1. alanı (görüntü adı) ve görüntünün uzunluğunu yüksekliğine bölmenin sonucunu yazdırır. sedKomut sadece çıkış güzelleştirici ve sortkomut görüntü boyutu oranına göre sonuca sıralar.
Daha karmaşık, bu dosya adlarındaki boşluklarla başa çıkabilir:
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
Burada find, ilgilendiğimiz dosyaları tanımlamak ve identifykomutu çalıştırmak için kullanıyoruz ve daha sonra çıktısını küçük bir PERL komut dosyası aracılığıyla pipetliyoruz. Normal ifade [A-Z]{3}, resim biçimi olması gereken üç büyük harf ( ) arar . Bunu bulduktan sonra, görüntü adını ve boyutlarını tanımlamak kolaydır.
Giriş dosyası adlarında boşluk bulunması alan numaralarını karıştıracağından burada gawk kullanmıyorum. Son olarak, komut dosyası görüntünün adını ve sortsayısal olarak uzunluk / yükseklik bölümünün sonucunu yazdıracaktır .
Mevcut en boy oranlarına göz atmak yeterli değilse, istenen en boy oranına sahip en az bir görüntünüz varsa, oranı en yakın olan görüntüleri çıkarmak için grep komutunu kullanın:
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. Nasıl keyfi bir değere yakınlık göre sıralamak bilmiyorum.sortböyle bir sıralamayı desteklemiyor gibi görünüyor.