Incluir extensão para vários arquivos, com base em seus tipos

5

Eu sei que há muitas perguntas sobre adicionar extensão a vários arquivos. Mas nenhum deles poderia fazer meu trabalho.

Eu tenho uma lista enorme de imagens sem extensão, a maioria delas são png, mas existem arquivos jpg também e talvez tiff.

Como eu poderia renomeá-los corretamente?

    
por Osama Abbas 20.05.2015 / 11:14

3 respostas

4

Talvez seja assim:

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
    
por 20.05.2015 / 11:41
2

Outra maneira com exiftool :

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

este r renomeia ecologicamente todos os arquivos de imagem sem extensão no diretório atual . to filename.TYPE onde TYPE é JPEG , PNG , TIFF etc.

Ou, para renomear apenas arquivos do tipo JPEG / PNG / TIFF que não possuem extensão:

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 '' .
    
por 20.05.2015 / 12:20
0

Não tenho certeza se isso responde à sua pergunta, mas se você quiser saber qual tipo de imagem (PNG, JPEG, etc.) é um arquivo específico, use o comando file :

file myimage.xxx

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

Tags