risposta-alla-domanda-sullo-sviluppo-web-bd.com

Elencare tutti i file di immagini grafiche con find?

Ci sono molti tipi di immagini grafiche in questo enorme archivio come .jpg, .gif, .png, ecc. Non conosco tutti i tipi. C'è un modo con 'trova' per essere in grado di elencare tutte le immagini grafiche indipendentemente dal nome dell'estensione punto? Grazie!

43
Edward

Questo dovrebbe fare il trucco

find . -name '*' -exec file {} \; | grep -o -P '^.+: \w+ image'

esempio di output:

./navigation/doc/Sphärische_Trigonometrie-Dateien/bfc9bd9372f650fd158992cf5948debe.png: PNG image
./navigation/doc/Sphärische_Trigonometrie-Dateien/6564ce3c5b95ded313b84fa918b32776.png: PNG image
./navigation/doc/subr_1.jpe: JPEG image
./navigation/doc/Astroanalytisch-Dateien/Gamma.gif: GIF image
./navigation/doc/Astroanalytisch-Dateien/deltaS.jpg: JPEG image
./navigation/doc/Astroanalytisch-Dateien/GammaBau.jpg: JPEG image
51
j.holetzeck

Quanto segue mi si adatta meglio poiché nel mio caso volevo reindirizzare questo elenco di file a un altro programma.

find . -type f -exec file {} \; | awk -F: '{if ($2 ~/image/) print $1}'

Se si desidera tarare le immagini (come qualcuno nei commenti) ha chiesto

find . -type f -exec file {} \; | awk -F: '{if ($2 ~/image/) printf("%s%c", $1, 0)}' | tar -cvf /tmp/file.tar --null -T -
25
f3xy
find . -type f -exec file {} \; | grep -o -P '^.+: \w+ image'

dovrebbe anche essere migliore.

11
Nicolas Appriou

Il grepping o l'utilizzo di awk solo per "immagine" non lo farà. I file PSD saranno identificati da "Immagine" con una "I" maiuscola, quindi dobbiamo migliorare la regexp per non distinguere tra maiuscole e minuscole o includere anche la maiuscola I. I file EPS non conterranno affatto la parola "immagine", quindi noi devi anche abbinare "EPS" o "Postscript" a seconda di ciò che desideri. Quindi ecco la mia versione migliorata:

find . -type f -exec file {} \; | awk -F: '{ if ($2 ~/[Ii]mage|EPS/) print $1}'
6
fltman

In relazione allo stesso problema, ho appena pubblicato uno strumento chiamato photofind ( https://github.com/trimap/photofind ). Si comporta come il normale comando find ma è specializzato per i file di immagine e supporta il filtraggio dei risultati anche in base alle informazioni EXIF ​​memorizzate nei file di immagine. Vedi il github-repo collegato per maggiori dettagli.

1
juusor