我想在目录中列出图片列表,并检查它们是否有捕获时间。如果没有,我想将捕获时间添加为修改日期,创建日期的最小值......
是否有使用bash命令读取和为图像文件指定捕获日期的命令?
答案 0 :(得分:2)
您可以使用jhead
。在基本表单中,您运行
jhead file.jpg
File size : 1926198 bytes
File date : 2014:03:01 11:59:27
Camera make : Apple
Camera model : iPhone 5
Date/Time : 2014:03:01 11:59:27
你可以看到它给你拍摄照片的时间和日期。
如果不存在,您可以使用以下命令创建EXIF部分并将日期/时间设置为文件的文件系统时间:
jhead -mkexif image.jpg
jhead image.jpg
File size : 1926198 bytes
File date : 2014:09:21 18:46:11
Camera make : Apple
Camera model : iPhone 5
Date/Time : 2014:09:21 18:46:11
或者,使用以下命令将日期/时间设置为命令行中指定的日期/时间:
jhead -dsyyyy:mm:dd file.jpg
例如:
jhead -ds2014:01:02 IMG_1594.JPG
jhead IMG_1594.JPG
File size : 1926198 bytes
File date : 2014:09:21 18:46:11
Camera make : Apple
Camera model : iPhone 5
Date/Time : 2014:01:02 18:46:11 <-------
总而言之,你得到了这个:
#!/bin/bash
shopt -s nullglob # Do nothing if no files present
shopt -s nocaseglob # Match upper and lower case jpg/JPG
for f in *.jpg; do # Loop through all files
jhead "$f" | grep "^Date/Time" # Check if date and time present
if [ $? -eq 0 ]; then # If set,
echo File: $f - Date/Time already set # ... do nothing
else
echo File: $f - Setting Date/Time as per filesystem
jhead -mkexif "$f" # ... else create an EXIF section
fi
done
在运行之前,请进行备份!!!!!