Как переименовать восстановленные видеофайлы mp4 в соответствии с "закодированной датой"
Я восстановил удаленные видеофайлы с SD-карты и теперь не могу отсортировать их по дате.
Я могу видеть "закодированную дату" с mediainfo filename
,
Как я могу использовать "закодированную дату" для сортировки видео, даже переименовать их в соответствии с этой датой или, что еще лучше, переписать "измененную дату" в свойства файла?
1 ответ
Предполагая, что строка вывода у вас выглядит примерно так (формат даты не имеет значения):
Encoded date : 2016-11-20
Вы можете переименовать файлы как даты с небольшим сценарием...
i=0; for f in *; do printf -v new "$(mediainfo "$f" | sed -nr 's/Encoded date\s+: (.*)/\1/p')-%02d.mp4" "$((++i))"; echo mv -v -- "$f" "$new"; done
Я даю им окончательный номер, чтобы гарантировать, что файлы с одинаковой датой не будут иметь одно и то же имя, что приведет к перезаписи некоторых файлов. Новые имена файлов будут 2016-11-20-01.mp4
и т. д. или любой другой формат даты из "Кодированной даты" для вас. Удалить echo
после тестирования на самом деле переименовать файлы. Более читаемая версия:
i=0
for f in *; do
printf -v new "$(mediainfo "$f" | sed -nr 's/Encoded date\s+: (.*)/\1/p')-%02d.mp4" "$((++i))"
echo mv -v -- "$f" "$new"
done
объяснение
i=0
начать итерацию с 0for f in *
для всех файлов в текущем каталоге (замените его на соответствующий путь или глобус, если необходимо)printf -v new
отформатировать новое имя, как это$(mediainfo "$f" | sed -nr 's/Encoded date\s+: (.*)/\1/p')
извлечь информацию о дате из поля даты в кодировке-%02d.mp4" "$((++i))"
добавить номер и расширение в конец каждого имени файлаmv -v -- "$f" "$new"
переименовать файлы