前言
需求来源,阿里云等狗云服务商为了不让用户方便迁移,在用户下载相册内容时,抹去了创建时间、修改时间等文件信息,导致我们使用自定义的相册服务(如群晖的photos、immich等)时,无法按时间线管理。
如果你是用windows,可以使用照片时间修复软件,效果更好:
- 在搜索栏或者Microsoft Store里搜索
照片时间修复并安装,或者去源码地址https://github.com/Cryolitia/PhotoTimeFix下载安装。
如果你是在macOS或者linux系统上使用命令行执行,请看下文:
安装exiftool
ubuntu apt install libimage-exiftool-perl
其他安装方式见官网exiftool
根据文件名里的时间字符串修复照片的修改时间
linux只能改FileModifyDate
exiftool "-FileModifyDate<filename" /volume1/photo/t2/*.*
PS: windows、macOS专用指令:(FileCreateDate)
exiftool "-FileCreateDate<filename" *.*
其他
exiftool不能识别时间戳,只能识别20250206、2025_0206之类的字符串。
如果文件名里的时间是时间戳,可以先自行用脚本转换成exiftool可以用的格式:
t.py:
import os
import re
import datetime
# 目标目录
directory = "/volume1/photo/t2"
# 正则表达式匹配13位数字的UNIX时间戳
pattern = re.compile(r'(\d{13})')
for filename in os.listdir(directory):
match = pattern.search(filename)
if match:
timestamp = int(match.group(1)) / 1000 # 转换为秒
date = datetime.datetime.utcfromtimestamp(timestamp)
formatted_date = date.strftime('%Y%m%d_%H%M%S')
# 替换文件名中的时间戳部分
new_filename = filename.replace(match.group(1), f"IMG_{formatted_date}")
# 构建完整的文件路径
old_filepath = os.path.join(directory, filename)
new_filepath = os.path.join(directory, new_filename)
# 重命名文件
os.rename(old_filepath, new_filepath)
print(f'Renamed "{filename}" to "{new_filename}"')
print("Renaming complete.")python t.py