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, identify
giriş görüntü dosyaları listesinin özelliklerini basacaktır. Bunu ile birleştirmek sort
size 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. sed
Komut sadece çıkış güzelleştirici ve sort
komut 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 identify
komutu ç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 sort
sayı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.sort
böyle bir sıralamayı desteklemiyor gibi görünüyor.