여러 파일 형식을 기반으로 확장명 추가

여러 파일 형식을 기반으로 확장명 추가

여러 파일에 확장자를 추가하는 것에 대해 많은 질문이 있다는 것을 알고 있습니다. 하지만 그들 중 누구도 내 일을 할 수 없습니다.

확장자가 없는 거대한 이미지 목록이 있습니다. 대부분은 png이지만 jpg 파일도 있고 tiff도 있을 수 있습니다.

이름을 올바르게 바꾸려면 어떻게 해야 합니까?

답변1

어쩌면 다음과 같은 것일 수도 있습니다.

for f in /some/dir/*; do
    type="$( file -bi -- "$f" )"
    case "${type%%;*}" in
        image/jpeg) ext=jpg ;;
        image/png)  ext=png ;;
        image/tiff) ext=tiff ;;
        *) printf '%s: %s: unknown file type\n' "${0##*/}" "$f" >&2; ext='' ;;
    esac
    if [ -n "$ext" ]; then mv -n -- "$f" "${f}.${ext}"; fi
done

답변2

또 다른 방법 exiftool:

exiftool -r -ext '' '-filename<$filename.$filetype' .

그러면 현재 디렉터리에서 확장자가 없는 모든 이미지 파일의 이름이 , 등으로 재귀적으로 r변경 됩니다..filename.TYPETYPEJPEGPNGTIFF

또는 확장자가 없는 JPEG/PNG/TIFF 유형 파일만 이름을 바꿉니다.

exiftool -if '$filetype eq "JPEG"' -filename=%f.jpg \
-execute -if '$filetype eq "PNG"' -filename=%f.png \
-execute -if '$filetype eq "TIFF"' -filename=%f.tiff \
-common_args -r -ext '' .

답변3

이것이 귀하의 질문에 대한 답변인지 확실하지 않지만 어떤 이미지 유형(PNG, JPEG 등)이 특정 파일인지 알고 싶다면 다음 명령을 사용할 수 있습니다 file.

file myimage.xxx

myimage.xxx: PNG image data, 837 x 814, 8-bit/color RGB, non-interlaced

관련 정보