Saya sudah mencoba menemukan file gambar png dengan ketinggian tertentu (lebih dari 500px). Saya tahu itu file
akan mengembalikan dimensi gambar. Contoh:
$ file TestImg1a.png
TestImg1a.png: PNG image data, 764 x 200, 4-bit colormap, non-interlaced
Tapi saya perlu menggunakan ini untuk menemukan semua file dalam direktori dengan ketinggian lebih dari 500px. Saya tahu cara mencetak semua file terlepas dari tinggi:
find . -name '*.png' | xargs file | awk '{print $7 " " $1}'
Tetapi bagaimana saya membatasi $ 7 untuk hasil yang lebih besar dari 500?
sumber
Saya merasa bahwa sesuatu selain utilitas shell akan lebih tepat, misalnya, Perl:
Kurang bergaul dengan mencoba untuk mengurai $ 7; dapatkan dimensi secara langsung. Ya, Anda memerlukan modul Image :: Info, tetapi, pada CentOS / RHEL, ini adalah paket standar, jadi Anda bisa menjalankannya
yum install perl-Image-Info
.sumber
apt-get install libimage-info-perl
Anda juga dapat menggunakan
identify
dari ImageMagick:Atau di OS X:
sumber
sumber
96, ./4/45445106_w185.png: 86, ./4/404358x_w185.png: 86, ./4/404341x_w185.png: 80, ./4/475986_w185.png: 621, ./4/481693_w185.png: 667, ./4/42513x_w185.png: 86, ./4/404372x_w185.png:
Solusi ini juga akan berfungsi. Bagian terakhir dari kode (
mv "$img" ./lowpixel
) akan memindahkan file di bawah lebar dan tinggi yang ditentukan ke folder. Dalam contoh berikut, semua gambar jpg di bawah 300x300 akan dipindahkan ke folder bernamalowpixel
:find -iname \*.jpg | while read img; do anytopnm "$img" | pamfile | perl -ane 'exit 1 if $F[3]<300 || $F[5]<300' || mv "$img" ./lowpixel; done
sumber