如何根据“编码日期”重命名未删除的 mp4 视频文件

如何根据“编码日期”重命名未删除的 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 *对于当前目录中的所有文件(如果需要,请用适当的路径或 glob 替换)
  • printf -v new像这样格式化新名称
  • $(mediainfo "$f" | sed -nr 's/Encoded date\s+: (.*)/\1/p')从编码日期字段中提取日期信息
  • -%02d.mp4" "$((++i))"在每个文件名末尾添加数字和扩展名
  • mv -v -- "$f" "$new"重命名文件

相关内容