Если вы используете (из командной строки или внутри скрипта ... если вам нужен скрипт, просто спросите;)) команда file thisimage.png, он скажет вам, какой формат изображения у вас на самом деле есть .... Тогда вы можете переименовать соответственно ...
Это пример того, что я получаю с файлом с неправильным расширением файла .png, который действительно является файлом jpg:
user@computer:$ file logo.png
logo.png: JPEG image data, JFIF standard 1.01
Edit: Oh, нормально, я был ленив раньше ... Вот сценарий, который переименует фактические файлы gif, имена которых с расширением .png соответствуют их правильному расширению .gif:
#!/bin/bash
for NAME in $(ls *.png); do
if [ "$(file $NAME|grep GIF)" ]; then
echo "Renaming ${NAME} to ${NAME%.*}.gif"
mv ${NAME} ${NAME%.*}.gif
fi
done