Tom*_*mas 16 bash python rename exif
假设我有一堆照片,所有照片都有正确的 EXIF 信息,并且照片是随机命名的(因为我遇到了问题)。我有一个名为的小程序jhead
,它给了我以下输出:
$ jhead IMG_9563.JPG
File name : IMG_9563.JPG
File size : 638908 bytes
File date : 2011:02:03 20:25:09
Camera make : Canon
Camera model : Canon PowerShot SX210 IS
Date/Time : 2011:02:03 20:20:24
Resolution : 1500 x 2000
Flash used : Yes (manual)
Focal length : 5.0mm (35mm equivalent: 29mm)
CCD width : 6.17mm
Exposure time: 0.0080 s (1/125)
Aperture : f/3.1
Focus dist. : 0.29m
ISO equiv. : 125
Exposure bias: -1.67
Whitebalance : Manual
Light Source : Daylight
Metering Mode: pattern
Exposure Mode: Manual
Run Code Online (Sandbox Code Playgroud)
现在我需要以下一个格式重命名文件夹中的所有照片:
001.JPG
002.JPG
003.JPG
...
Run Code Online (Sandbox Code Playgroud)
次要编号是旧图像,最大值是新图像。
我不太擅长脚本,所以我在寻求帮助。
我觉得一个bash脚本就够了,但是如果你觉得更舒服,你可以写一个python脚本。
我想过这样的事情:
$ mv IMG_9563.JPG `jhead IMG_9563.JPG | grep date`
Run Code Online (Sandbox Code Playgroud)
但我不知道如何一次对所有文件执行此操作。
小智 34
刚刚在这里发现 jhead 可以为你做这一切!:)
jhead -autorot -nf%Y-%m-%d_%H-%M-%S *.jpg
Run Code Online (Sandbox Code Playgroud)
max*_*zig 10
您可以使用 for 循环(在 shell 中/在 shell 脚本中)为所有文件访问它:
for i in *.JPG; do
j=`jhead "$i" | grep date | sed 's/^File date[^:]\+: \(.\+\)$/\1/'`.jpg
echo mv -i "$i" "$j"
done
Run Code Online (Sandbox Code Playgroud)
这只是一个非常基本的大纲。echo
确认一切正常后删除。