У меня есть папка с несколькими типами файлов (mp4, mp4, jpg, wma .etc), и эти файлы либо не имеют расширения, либо имеют все испорченные расширения, такие как mp3.mp3, mp3.jpg или просто имя файла. Я читал, что exiftool или даже python magic могут быть использованы для назначения правильного расширения файла при понимании типа файла. Я ищу решение на основе exiftool, где эти файлы могут быть переименованы с правильным расширением файла.

например, имя файла (это файл mp3) filename1.jpg (это опять файл mp3, с расширением jpg) имя файла.mp3.mp3.mp3 (повторение расширения)

2 ответа2

0

Повторный ответ из другой копии вопроса…

В самом простом попробуйте это (замените двойные кавычки на одинарные, если на Mac/Linux):
exiftool -ext "*" "-filename<$filename.$filetype" TargetDir
или же
exiftool -ext "*" "-testname<%f.$filetype" TargetDir

Это просто добавит расширение всем файлам в TargetDir. Чтобы добавить, добавьте -r . Если расширение уже было, это добавит правильное расширение в конце ложного расширения, например, filename.mp3 станет filename.mp3.jpeg.

Для более сложной версии, которая удаляет некоторые из предыдущих, ложных расширений, вы можете попробовать что-то вроде этого:
exiftool -ext "*" "-filename<${filename;s/(\.(mp3|mp4|jpe?g|png|wma|mov))*($)//i}%-c.$filetype" TargetDir
который лишил бы расширения, которые находятся в центре parens в регулярном выражении. %-c добавит число, если полученное переименование будет дубликатом, например, filename.jpeg, filename-1.jpeg,… filename-n.jpeg.

Редактировать: добавлена опция -ext для работы с файлами без расширения.

0

Я обнаружил, что Irfanview автоматически определит расширения файлов изображений и предложит мне переименовать их

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .