콘텐츠별로 이미지 파일을 찾는 방법

콘텐츠별로 이미지 파일을 찾는 방법

파일 목록이 있고 필요합니다.모든 이미지 파일 찾기이 목록에서.

예를 들어 내 목록에 다음이 포함되어 있는 경우:

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( -iMIME 유형을 표시합니다. 이는 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

명령 외에도 fileImageMagick을 사용할 수도 있습니다. 다음은 현재 디렉토리에 있는 모든 파일의 유형을 표시합니다.

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

관련 정보