Я пытался найти файлы изображений PNG определенной высоты (более 500 пикселей). Я знаю, что file
вернет размеры изображения. Пример:
$ file TestImg1a.png
TestImg1a.png: PNG image data, 764 x 200, 4-bit colormap, non-interlaced
Но мне нужно использовать это, чтобы найти все файлы в каталоге с высотой более 500 пикселей. Я знаю, как распечатать все файлы независимо от высоты:
find . -name '*.png' | xargs file | awk '{print $7 " " $1}'
Но как мне ограничить 7 долларов до тех результатов, которые превышают 500?
источник
Я чувствую, что что-то, кроме утилит оболочки, будет более подходящим, например, Perl:
Меньше возиться с попытками разобрать 7 долларов; просто получите размеры напрямую. Да, вам понадобится модуль Image :: Info, но в CentOS / RHEL это стандартный пакет, так что вы можете просто запустить
yum install perl-Image-Info
.источник
apt-get install libimage-info-perl
Вы также можете использовать
identify
из ImageMagick:Или в OS X:
источник
источник
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:
Это решение также будет работать. Последняя часть кода (
mv "$img" ./lowpixel
) будет перемещать файлы ниже указанной ширины и высоты в папку. В следующем примере все изображения jpg размером менее 300x300 будут перемещены в папку с именемlowpixel
: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
источник