当上传到 ftp 站点时,原始文件创建日期似乎丢失了,而我得到了上传日期。但是,文件中的 Exif 数据是正确的。有没有一个工具可以批量更改Exif日期的创建日期?
答案1
EXIF 处理工具exiv2
为此有一个内置选项:
exiv2 -T rename image.jpg
将上次文件修改时间 设置 mtime
为 EXIF 元数据中存储的日期。
您要求使用创建时间 - 但这在类 Unix 系统中不使用,并且有有充分的理由。
我很确定您调用创建时间的时间实际上是mtime
,没有问题。
NAME
exiv2 - Image metadata manipulation tool
SYNOPSIS
exiv2 [options] [action] file ...
DESCRIPTION
exiv2 is a program to read and write Exif, IPTC and XMP image metadata and image com‐
ments. The following image formats are supported:
[ ... ]
mv | rename
Rename files and/or set file timestamps according to the Exif create time‐
stamp. Uses the value of tag Exif.Photo.DateTimeOriginal or, if not
present, Exif.Image.DateTime to determine the timestamp. The filename for‐
mat can be set with -r fmt, timestamp options are -t and -T.
[ ... ]
-T Only set the file timestamp according to the Exif create timestamp, do not
rename the file (overrides -k). This option is only used with the 'rename'
action. Note: On Windows you may have to set the TZ environment variable for
this option to work correctly.
-t
请参阅执行相反操作的选项。
答案2
假设,正如“Volker Siegel”提到的,您可能指的是 mtime,我会简单地使用 exiftools 内置函数。
喜欢:
$ exiftool "-DateTimeOriginal>FileModifyDate" test.jpg
这将获取“exif 字段“DateTimeOriginal”信息,并使用它来设置文件系统“test.jpg”的修改日期/时间信息。
例子:
$ ls -la test.jpg
-rw-r-----@ 1 user 18329968 2432451 14 Out 17:57 test.jpg
$ exiftool -DateTimeOriginal test.jpg
Date/Time Original : 2015:10:09 13:29:58
$ exiftool "-DateTimeOriginal>FileModifyDate" test.jpg
1 image files updated
$ ls -la test.jpg
-rw-r-----@ 1 user 18329968 2432451 9 Out 13:29 test.jpg
答案3
也可以使用jhead
命令来制作:
$ jhead -ft file.jpg
从手册页:
-ft
将文件的系统时间戳设置为 Exif 标头中存储的时间戳。
-dsft
将 Exif 时间戳设置为文件的时间戳。需要预先存在 Exif 标头。如果需要,请使用-mkexif
选项创建一个。
答案4
ExifTool 可以读取和操作大多数 EXIF 信息,包括提取日期/时间原始或创建数据 EXIF 标签。您可以使用此信息来重命名文件或更改其时间戳。例如:
find -name '*.jpg' | while read PIC; do
DATE=$(exiftool -p '$DateTimeOriginal' $PIC |
sed 's/[: ]//g')
touch -t $(echo $DATE | sed 's/\(..$\)/\.\1/') $PIC
done
这将查找当前目录中的所有 JPG 文件并更新时间戳。
如果您还想根据该日期为这些文件命名(这往往会派上用场),那么还要mv -i $PIC $(dirname $PIC)/$DATE.jpg
在该done
行之前添加。