我正在使用pyrenamer
我的照片集,除了一个问题外,它的效果很好。我希望它按拍摄日期的元数据重命名照片,最后是一个三位数字。我库中的每个文件夹代表一天,我希望照片以 001-999 的数字结尾,每个文件夹从 001 开始。示例文件名是 2016-01-31-001.jpg。
Shotwell 使用选项中的结构处理在导入时创建目录结构%Y/%m/%d
,但是当我在 ~/Pictures 目录中递归使用 pyrenamer 时,我看不到预期的结果。它按日期重命名,但在文件夹之间继续递增,而不是从每个新文件夹的 001 开始。有没有更简单的方法来解决这个问题?
我知道我可以添加更多元数据变量并根据小时、分钟和秒重命名,但这会提供比我想要的更长的文件名。我的相机每秒也可以拍摄多张照片,所以这对于重命名是有问题的。
请问最简单的方法是什么?我喜欢使用 pyrenamer,但 bash 脚本也可以。
电流输出:
Pictures/
├── Folder 1/
│ ├── YY-MM-DD-001.jpg
│ └── YY-MM-DD-002.jpg
├── Folder 2/
│ ├── YY-MM-DD-003.jpg
│ └── YY-MM-DD-004.jpg
...
期望的输出:
Pictures/
├── Folder 1/
│ ├── YY-MM-DD-001.jpg
│ └── YY-MM-DD-002.jpg
├── Folder 2/
│ ├── YY-MM-DD-001.jpg
│ └── YY-MM-DD-002.jpg
...
要将您的整个 JPEG 照片图像库重命名为YYYY-MM-DD-XXX.jpg格式,每天从 -001 开始计数,请使用以下命令
exiftool
:为了充分解释该命令,以下是它的工作原理。
exiftool
启动脚本。-fileOrder DateTimeOriginal
强制 exiftool 按照拍摄顺序处理图像。这对于按照原始时间顺序在一天内保留图像编号至关重要。-recurse
递归处理子目录,这在您使用 Shotwell 导入时很有帮助,因为照片放置在按日期组织的目录中。-extension jpg -extension jpeg
将确保只处理 JPEG 文件。(请注意,这些不是特定于案例的,并且 jpg=JPG 所以我们可以捕获所有内容)-ignoreMinorErrors
忽略任何不影响我们期望结果的错误(通常是读取此操作不需要的无关标签的问题)。'-FileName<CreateDate'
将照片创建日期放在文件名中。-d %Y-%m-%d%%-.3nc.%%e
此处-d
设置所需的输出日期格式。我们将使用连字符的四位数年份,然后是两位数的月份和日期 (%Y-%m-%d
),然后是一个以 001 ( ) 开头的三位数字%%-.3nc
,保留原始文件扩展名 (.%%e
)。~/Pictures/
是最后一项,它只是exiftool
应该使用命令处理的目录。关于错误的说明,有
-ignoreMinorErrors
帮助,但您仍然可能会看到可以安全忽略的消息“警告:错误的 PreviewIFD 目录”或“警告:没有从 /path/to/problem/image.jpg 设置可写标签”。第二个我无法解决,但我只看到了几张图片,所以我在 Nautilus 中手动重命名它们作为一种解决方法。此命令仍有待改进,但它已经过测试并适用于大型(40GB,13000 张图像)照片库,速度很快且不会产生错误,只是无法重命名缺少大多数现代相机都会创建的标签的偶尔图像.