Linux find: Lista wszystkich plików graficznych z find?

Istnieje wiele rodzajów obrazów graficznych w tym ogromnym archiwum, takich jak .jpg,gif,png itp. Nie znam wszystkich typów. Czy istnieje sposób z "Znajdź", aby móc wyświetlić listę wszystkich obrazów graficznych niezależnie od ich nazwy rozszerzenia dot? Dzięki!

Author: Edward, 2013-05-26

5 answers

To powinno załatwić sprawę

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

Przykładowe wyjście:

./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
 46
Author: j.holetzeck,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-26 10:42:13

Poniżej bardziej mi odpowiada, ponieważ w moim przypadku chciałem przekierować tę listę plików do innego programu.

find . -type f -exec file {} \; | awk -F: '{if ($2 ~/image/) print $1}'
 20
Author: f3xy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-11 18:02:18
find . -type f -exec file {} \; | grep -o -P '^.+: \w+ image'
Powinno być nawet lepiej.
 11
Author: Nicolas Appriou,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-25 15:56:19

Grepping lub użycie awk tylko dla "image" nie zrobi tego. Pliki PSD będą identyfikowane przez" Image "z wielką literą "I", więc musimy poprawić Wyrażenie regularne, aby było niewrażliwe na wielkość liter lub również zawierać duże I. pliki EPS nie będą zawierać słowa "image" w ogóle, więc musimy również dopasować do "EPS" lub "Postscript" w zależności od tego, co chcesz. Oto moja ulepszona wersja:

find . -type f -exec file {} \; | awk -F: '{ if ($2 ~/[Ii]mage|EPS/) print $1}'
 5
Author: fltman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-18 09:13:47

Związane z tym samym problemem, właśnie opublikowałem narzędzie o nazwie photofind (https://github.com/trimap/photofind). zachowuje się jak normalne polecenie find, ale jest wyspecjalizowane dla plików graficznych i obsługuje filtrowanie wyników również na podstawie informacji EXIF przechowywanych w plikach graficznych. Więcej szczegółów można znaleźć w połączonym github-repo.

 1
Author: juusor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-11 07:58:55