파일 목록이 있고 필요합니다.모든 이미지 파일 찾기이 목록에서.
예를 들어 내 목록에 다음이 포함되어 있는 경우:
pidgin.tar.gz
photo01.jpg
picture01
screenshot.gif
invoice.pdf
그런 다음 다음을 선택하고 싶습니다.
photo01.jpg
picture01
screenshot.gif
노트:
- 메소드는 파일 확장자에 의존해서는 안 됩니다.
- Photoshop 및 Gimp의 흐릿한 이미지 형식은 무시할 수 있습니다. (
feh
표시할 수 없는 경우는 이미지가 아닙니다.)
답변1
다음 명령은 list_file
이미지 파일 이름이 포함된 줄을 나열합니다.
<list_file xargs -d \\n file -i | sed -n 's!: *image/[^ :]*$!!p'
file -i FOO
형식을 결정하기 위해 처음 몇 바이트를 보고 한FOO
줄을 인쇄합니다FOO: image/jpeg
(-i
MIME 유형을 표시합니다. 이는 Linux의 GNU 파일에만 해당됩니다).xargs -d \\n
표준 입력에서 파일 목록(한 줄에 하나씩)을 읽고 후속 명령을 적용합니다. (이를 위해서는 Linux에서 GNU xargs가 필요합니다. 다른 시스템에서는 생략되지만-d \\n
파일 목록에는\'"
공백이 포함될 수 없습니다.)- 이
sed
명령은 접미사를 필터링: image/FOO
하고 파일 이름만 표시합니다. 이미지 파일에 해당하지 않는 행은 무시됩니다.
답변2
file -ib image | awk '"^image/" {print}'
파일이 이미지를 감지하면 다음과 같은 줄을 인쇄해야 합니다.
image/jpeg; charset=binary
매직 넘버와 함께 작동하므로 확장을 기반으로 하지 않습니다. 그것
답변3
명령 외에도 file
ImageMagick을 사용할 수도 있습니다. 다음은 현재 디렉토리에 있는 모든 파일의 유형을 표시합니다.
find -type f -depth 0 -print0 | xargs -0 identify
이 identify
명령은 다양한 파일 형식에 대해 다음을 인쇄합니다.
text.txt[8] TXT 612x792 612x792+0+0 16-bit DirectClass 694B 0.320u 0:00.330
php.jpg[31] JPEG 1280x1024 1280x1024+0+0 8-bit DirectClass 195KB 0.000u 0:00.000
애니메이션 GIF 파일은 더 많은 정보를 인쇄합니다(21프레임 GIF).
adhd.gif[0] GIF 211x200 211x200+0+0 8-bit PseudoClass 256c 233KB 0.000u 0:00.029
adhd.gif[1] GIF 168x130 211x200+22+22 8-bit PseudoClass 256c 233KB 0.000u 0:00.029
adhd.gif[2] GIF 168x130 211x200+22+22 8-bit PseudoClass 256c 233KB 0.000u 0:00.029
...
adhd.gif[18] GIF 168x130 211x200+22+22 8-bit PseudoClass 256c 233KB 0.000u 0:00.000
adhd.gif[19] GIF 168x130 211x200+22+22 8-bit PseudoClass 256c 233KB 0.000u 0:00.000
adhd.gif[20] GIF 168x130 211x200+22+22 8-bit PseudoClass 256c 233KB 0.000u 0:00.000
awk
그런 다음 유사한 도구를 사용하여 무엇을 할지 결정할 수 있습니다.
답변4
어쩌면 내가 뭔가를 놓친 것일 수도 있지만 이것은 나에게 효과가 있는 것 같습니다.
file -i * | grep "image/" | cut -d: -f1