Однострочный с помощью команды rename:
rename 's/.*/use File::MimeInfo::Magic qw#mimetype extensions#; sprintf("%s.%s", $&, extensions(mimetype($&)))/e' * -vn
использует модуль Perl File::MimeInfo для запроса файла (как это делает команда file) для разработки что этот файл есть, а затем добавить первое расширение MimeInfo для этого типа MIME обратно в файл.
В некоторых случаях это может привести к использованию менее широко используемых расширений (например, jpeg или jpe для большинства люди будут называть файлы jpg), но вы можете сделать второй проход, чтобы исправить их довольно легко:
rename 's/\.jpe$/.jpg/' *
Но большинство приложений не будут возражать, если вы укажете файлы .jpe, чтобы это не было необходимо большинству время
Обе команды rename выше установлены в тестовом режиме. Они ничего не сделают, пока вы не удалите аргумент -n с конца.