在文件名上添加具体时间的命令?

在文件名上添加具体时间的命令?

我刚刚旅行回来,试着整理我和妻子用 4 台设备拍摄的少量照片:2 部智能手机和 2 台相机。

我选择使用 PyRenamer(EXIF)重命名所有文件,如下所示:YYYYMMDD_HHMMSS.jpg

两部智能手机和一部相机都采用当地时间,没有问题。但我妻子的相机的时差为 5:46。

我的问题很简单:如何为每个文件添加 5:46?

提前致谢。

答案1

笔记:以下内容不会更改文件的 EXIF 数据或实际时间戳 - 只会更改其名称。最好一致地更改所有这三个(也许可以使用exiftool?)


似乎可以使用基于 perl 的prename/rename命令,用来strptime读取格式化的时间字符串,然后strftime在添加偏移量(以秒为单位)后将其写回(隐式转换为 Time::Piece 对象)。

根据评论,由“我妻子的相机的时间偏移是 5:46”您似乎指的是 5 小时 46 分钟(而不是 5 分钟 46 秒),并且需要向前移动 5 x 3600 + 46 x 60 = 20760 秒。因此您可以这样做:

prename -vn -- '
BEGIN{use Time::Piece};
s/\d+_\d+/(20760+Time::Piece->strptime($&, "%Y%m%d_%H%M%S"))->strftime("%Y%m%d_%H%M%S")/e
' *.jpg
20161019_112301.jpg renamed as 20161019_170901.jpg

-n标记用于测试 - 当您当然该命令正在执行正确的转换。

请参阅此相关问题如何批量将文件夹名称从一种日期格式转换为另一种日期格式

相关内容