Как переименовать восстановленные видеофайлы 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 начать итерацию с 0
  • for f in * для всех файлов в текущем каталоге (замените его на соответствующий путь или глобус, если необходимо)
  • printf -v new отформатировать новое имя, как это
  • $(mediainfo "$f" | sed -nr 's/Encoded date\s+: (.*)/\1/p') извлечь информацию о дате из поля даты в кодировке
  • -%02d.mp4" "$((++i))" добавить номер и расширение в конец каждого имени файла
  • mv -v -- "$f" "$new" переименовать файлы
Другие вопросы по тегам