He estado tratando de encontrar archivos de imagen png de cierta altura (más de 500 px). Sé que file
devolverá las dimensiones de la imagen. Ejemplo:
$ file TestImg1a.png
TestImg1a.png: PNG image data, 764 x 200, 4-bit colormap, non-interlaced
Pero necesito usar esto para encontrar todos los archivos en un directorio con una altura superior a 500 px. Sé cómo imprimir todos los archivos independientemente de la altura:
find . -name '*.png' | xargs file | awk '{print $7 " " $1}'
Pero, ¿cómo limito los $ 7 a esos resultados superiores a 500?
fuente
Siento que algo más que las utilidades de shell sería más apropiado, por ejemplo, Perl:
Menos molestias al tratar de analizar $ 7; solo obtén las dimensiones directamente. Sí, necesitará el módulo Image :: Info, pero, en CentOS / RHEL, es un paquete estándar, por lo que puede ejecutarlo
yum install perl-Image-Info
.fuente
apt-get install libimage-info-perl
También puedes usar
identify
desde ImageMagick:O en OS X:
fuente
fuente
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 solución también funcionará. La última parte del código (
mv "$img" ./lowpixel
) moverá los archivos por debajo de un ancho y alto específicos a una carpeta. En el siguiente ejemplo, todas las imágenes jpg inferiores a 300x300 se moverán a una carpeta llamadalowpixel
: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
fuente