Eu tenho tentado encontrar arquivos de imagem png a uma certa altura (acima de 500px). Eu sei que file
retornará as dimensões da imagem. Exemplo:
$ file TestImg1a.png
TestImg1a.png: PNG image data, 764 x 200, 4-bit colormap, non-interlaced
Mas preciso usar isso para encontrar todos os arquivos em um diretório com uma altura acima de 500px. Eu sei como imprimir todos os arquivos, independentemente da altura:
find . -name '*.png' | xargs file | awk '{print $7 " " $1}'
Mas como faço para limitar os US $ 7 a esses resultados maiores que 500?
fonte
Eu sinto que algo diferente de utilitários de shell seria mais apropriado, por exemplo, Perl:
Menos brincadeiras ao tentar analisar US $ 7; basta obter as dimensões diretamente. Sim, você precisará do módulo Image :: Info, mas, no CentOS / RHEL, é um pacote padrão, para que você possa executar
yum install perl-Image-Info
.fonte
apt-get install libimage-info-perl
Você também pode usar o
identify
ImageMagick:Ou no OS X:
fonte
fonte
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:
Esta solução também funcionará. A última parte do código (
mv "$img" ./lowpixel
) moverá os arquivos abaixo de uma largura e altura especificadas para uma pasta. No exemplo a seguir, todas as imagens jpg menores que 300 x 300 serão movidas para uma pasta chamadalowpixel
: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
fonte