2 votos

Cómo imprimir solo una parte de la salida

Yo soy un poco nuevo en scripts de shell y yo estoy luchando para obtener sólo la información que necesita de un comando.

Estoy ejecutando este script:

#!/bin/bash
myfunction(){
   find . -name '*' -exec file {} \; | grep "image"
}
myfunction

Básicamente, lo que me falta es la lista de los nombres de las imágenes en mi directorio y los datos acerca de su resolución, pero tengo un montón de datos que son inútiles para mí:

./image222s.jpeg: JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, baseline, precision 8, 554x554, components 3
./fruta-png.png: PNG image data, 1400 x 1501, 8-bit/color RGBA, non-interlaced
./ddd.jpeg: JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, baseline, precision 8, 540x568, components 3
./images.jpeg: JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, baseline, precision 8, 452x678, components 3

Me gustaría saber cómo puedo reducir el resultado a sólo el nombre de archivo y su resolución. Algo así como:

image.jpeg: 452x678
image222.jpeg: 554x554

Gracias!

1voto

Rouven Volkmann Puntos 51

Si usted puede utilizar identify herramienta de imagemagick, se puede pasar un -format cadena a imprimir sólo la información necesaria:

Instale imagemagick si es necesario:

sudo apt-get install imagemagick

A continuación, ejecute:

find . -type f -exec identify -format "%i: %P\n" {} \; 2>/dev/null

(o + en lugar de \; que va a ser más rápido, pero se imprime al final solamente).


Si usted tiene un montón de no-imagen de los archivos que coincidan con su find, es posible que desee filtrar estos primeros porque file será más rápido que identify:

find . -type f -exec sh -c 'file "$1" | grep -q image' find-sh {} \; -exec identify -format '%i: %P\n' {} \;

Nota, que file podría filtrar algunos formatos de archivo que no se conoce, que identify podría hacer, por ejemplo, las imágenes RAW.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: