Ohto Nordberg Asked: 2016-11-21 07:36:06 +0800 CST2016-11-21 07:36:06 +0800 CST 2016-11-21 07:36:06 +0800 CST 如何根据“编码日期”重命名未删除的 mp4 视频文件 772 我从 sd 卡中恢复了已删除的视频文件,现在我无法按日期对它们进行排序。 我可以看到“编码日期” mediainfo filename。 如何使用“编码日期”对视频进行排序,甚至根据该日期重命名它们,或者更好地将“修改日期”重写为文件属性? files 1 个回答 Voted Best Answer Zanna 2016-11-21T08:07:15+08:002016-11-21T08:07:15+08:00 假设您的输出行看起来像这样(日期格式无关紧要): 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.mp4etc 或“编码日期”中适合您的任何日期格式。测试后删除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"重命名文件
假设您的输出行看起来像这样(日期格式无关紧要):
您可以使用一个小脚本将文件重命名为日期...
我给他们一个最终编号,以确保具有相同日期的文件不会以完全相同的名称结束,这会导致某些文件被覆盖。新文件名将是
2016-11-20-01.mp4
etc 或“编码日期”中适合您的任何日期格式。测试后删除echo
以实际重命名文件。更易读的版本:解释
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"
重命名文件