저는 수천 개의 jpg 파일을 필터링하고 특정 속성(예: 사진을 캡처한 카메라 브랜드)을 가진 파일만 유지하는 방법을 찾으려고 노력하고 있습니다. 어떻게 해야 하나요?
답변1
추출하는 도구에는 여러 가지가 있습니다.EXIFEXIF 데이터를 기반으로 데이터를 처리하고 이미지 파일을 조작할 수도 있습니다.
그리고내보내기 도구, EXIF 속성을 기반으로 파일 이름을 바꿀 수 있습니다. 특히, 특정 EXIF 속성으로 명명된 하위 디렉터리로 파일을 쉽게 보낼 수 있습니다. 그런 다음 결과를 검토하고 관심 없는 파일이 포함된 디렉터리를 삭제할 수 있습니다.
exiftool '-Directory<${Model}/%d' -r .
Exiftool을 사용하면 이 작업이 쉬워지지만 설명을 위해 EXIF 속성을 사용하여 jpeg 파일을 하위 디렉터리로 정렬하는 셸 조각이 있습니다.엑시프. 속성 값에는 문자가 포함될 수 없습니다 /
. -t
를 실행하여 옵션 번호를 확인할 수 있습니다 exif -l
.
for f in *.jpg; do
v=$(exif -m -t 0x0110 -- "$f" 2>/dev/null)
if [ -n "$v" ]; then
mkdir -p -- "$v"
mv -- "$f" "$v"
fi
done
그리고Exiv2, v=…
해당 줄을 로 바꿉니다 v=$(exiv2 -g Exif.Image.Model -Pv -- "$f")
.
파일이 디렉터리 트리에 구성되어 있는 경우 을 호출하여 find
디렉터리 트리를 재귀적으로 순회하세요. 모든 이미지가 라는 디렉토리 아래에 있다고 가정합니다 unknown
. 다음 코드 조각은 각 이미지 모델에 대한 디렉터리를 만들고 파일을 복사하여 원래 디렉터리 계층 구조를 미러링합니다.
find unknown -name '*.jpg' -exec sh -c '
v=$(exif -m -t 0x0110 -- "$f" 2>/dev/null)
[ -n "$v" ] || exit
d=${0#*/}; d=${d%/*}
mkdir -p -- "$v/$d"
mv "$0" "$v/$d"
' {} \;