크기별로 이미지 찾기: /file/awk 찾기

크기별로 이미지 찾기: /file/awk 찾기

특정 높이(500px 이상)의 png 이미지 파일을 찾으려고 노력해 왔습니다. 나는 이것이 file이미지 크기를 반환한다는 것을 알고 있습니다. 예:

$ file TestImg1a.png

TestImg1a.png: PNG image data, 764 x 200, 4-bit colormap, non-interlaced   

하지만 디렉토리에서 높이가 500px를 초과하는 모든 파일을 찾으려면 이 도구를 사용해야 합니다. 높이에 관계없이 모든 파일을 인쇄하는 방법을 알고 있습니다.

find . -name '*.png' | xargs file | awk '{print $7 " " $1}'

하지만 500보다 큰 결과에 대해 7달러를 제한하는 방법은 무엇입니까?

답변1

exiftool -q -r -ext png -if '$ImageHeight > 500' -p '$Directory/$FileName' .

답변2

나는 이것이 약간 과잉이라는 것을 알고 있지만 파일이 정보를 표시하는 방법에 관계없이 이것은 항상 작동합니다(파일 이름에 공백이 있더라도).

find . -name '*.png' -exec file {} \; | sed 's/\(.*png\): .* \([0-9]* x [0-9]*\).*/\2 \1/' | awk 'int($1) > 500 {print}'

사진과 문서의 크기를 인쇄합니다.

설명하다:

  1. find.png 아래에 *.png라는 이름의 모든 파일을 만들고 각 파일에 대한 파일을 만듭니다.

  2. sed파일 이름과 크기만 인쇄한 다음 크기를 먼저 인쇄하도록 재정렬하는 데 사용됩니다 .

  3. awk첫 번째 숫자(이미지 높이)를 테스트하는 데 사용됩니다 . 이 숫자가 500보다 큰지 확인하고, 인쇄 크기 및 파일 이름인 경우에는 아무 작업도 수행하지 않습니다.

답변3

ImageMagick을 사용할 수도 있습니다 identify.

find . -name \*.png -print0|xargs -0 identify -format '%h %f\n'|
awk '$1>500'|cut -d' ' -f2-

또는 OS X에서는:

mdfind 'kMDItemFSName=*.png&&kMDItemPixelHeight>500' -onlyin .

답변4

find . -name '*.png' -exec file "{}" \+ | awk -F"(: +PNG image data|,| x )" '$4 > 500 {print $4" "$1}'

관련 정보