В этом огромном архиве есть много типов графических изображений, таких как .jpg,.gif,.png и т.д. Я не знаю всех типов. Есть ли способ "найти", чтобы иметь возможность отображать все графические изображения независимо от их имени расширения точки? Спасибо!
Linux find: список всех графических файлов с помощью find?
Ответ 1
Это должно сделать трюк
find . -name '*' -exec file {} \; | grep -o -P '^.+: \w+ image'
Пример вывода:
./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
Ответ 2
Следующее мне подходит, так как в моем случае я хотел передать этот список файлов в другую программу.
find . -type f -exec file {} \; | awk -F: '{if ($2 ~/image/) print $1}'
Ответ 3
find . -type f -exec file {} \; | grep -o -P '^.+: \w+ image'
должно быть даже лучше.
Ответ 4
Grepping или использование awk для "изображения" только этого не сделает. PSD файлы будут идентифицироваться с помощью "Image" с капиталом "I", поэтому нам нужно улучшить регулярное выражение либо нечувствительным к регистру, либо также включать капитал I. EPS файлы вообще не содержат слова "изображение", поэтому мы необходимо также соответствовать "EPS" или "Postscript" в зависимости от того, что вы хотите. Итак, вот моя улучшенная версия:
find . -type f -exec file {} \; | awk -F: '{ if ($2 ~/[Ii]mage|EPS/) print $1}'
Ответ 5
В связи с той же проблемой я только что опубликовал инструмент под названием photofind (https://github.com/trimap/photofind). Он ведет себя как обычная команда find, но специализируется на файлах изображений и поддерживает фильтрацию результатов также на основе EXIF-информации, хранящейся в файлах изображений. Подробнее см. Связанный github-repo.