Abaixo de uma solução python (script).
O script usa o módulo imghdr para reconhecer o tipo de arquivo. Ele adicionará as extensões de arquivo corretas (se ausentes) dos seguintes tipos:
rgb, gif, pbm, pgm, ppm, tiff, rast, xbm, jpeg, bmp, png
Se o arquivo já tiver uma extensão de arquivo, ele será ignorado. Caso o arquivo seja de um tipo de arquivo desconhecido (se estiver danificado, por exemplo), o arquivo é reportado como "não foi possível determinar":
could not determine: /home/jacob/Bureaublad/picturetest/blub
O script:
#!/usr/bin/env python3
import os
import imghdr
import shutil
directory = "/path/to/pictures"
for name in os.listdir(directory):
# combining file+its directory:
file = directory+"/"+name
# only files without a dot are subject to renaming (else the file already has a file extension or is a hidden file):
if name.count(".") == 0:
# fetch the file extension from the file:
ftype = imghdr.what(file)
# if it is impossible to get the extension (if the file is damaged for example), the file(s) will be listed in the terminal window:
if ftype != None:
shutil.move(file, file+"."+ftype)
else:
print("could not determine: "+file)
Cole-o em um arquivo vazio, salve-o como rename.py, configure o diretório para as imagens na directory = "/path/to/pictures"
-line e execute-o pelo comando:
python3 /path/to/rename.py
Renomeie recursivamente
Caso suas imagens não estejam em um diretório "flat", mas em um diretório em camadas, use a versão abaixo. Ele irá verificar (e reparar se necessário) extensões de arquivo dentro da pasta atual do arquivo.
#!/usr/bin/env python3
import os
import imghdr
import shutil
directory = "/path/to/pictures"
for root, dirs, files in os.walk(directory):
for name in files:
file = root+"/"+name
if name.count(".") == 0:
ftype = imghdr.what(file)
if ftype != None:
shutil.move(file, file+"."+ftype)
else:
print("could not determine: "+file)