更正图像文件中的捕获时间

时间:2014-09-21 17:29:59

标签: bash filesystems

我想在目录中列出图片列表,并检查它们是否有捕获时间。如果没有,我想将捕获时间添加为修改日期,创建日期的最小值......

是否有使用bash命令读取和为图像文件指定捕获日期的命令?

1 个答案:

答案 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

在运行之前,请进行备份!!!!!