Erstellungsdatum der Datei in JPEG EXIF-Metadaten ändern

29

Beim Hochladen auf eine FTP-Site scheint das Erstellungsdatum der Originaldatei verloren zu sein, und ich erhalte stattdessen das Upload-Datum. Die Exif-Daten in der Datei sind jedoch korrekt. Gibt es ein Tool, um das Erstellungsdatum gegenüber dem Exif-Datum stapelweise zu ändern?

Finn Ove
quelle
1
Bitte akzeptieren Sie die Antwort, die Sie am hilfreichsten finden. Auf diese Weise werden andere Personen, die nach dieser Frage suchen, als "beantwortet" gekennzeichnet. Es ist auch eine Möglichkeit, eine Person zu belohnen, die ihre Zeit damit verbracht hat, Ihnen zu helfen.
Dmitry Grigoryev

Antworten:

27

Das EXIF-Bearbeitungstool exiv2verfügt über eine integrierte Option für Folgendes:

exiv2 -T rename image.jpg

Stellt den Zeitpunkt der letzten Dateiänderung mtimeauf das in den EXIF-Metadaten gespeicherte Datum ein.

Sie haben nach der Erstellungszeit gefragt, aber diese wird in Unix-ähnlichen Systemen nicht verwendet. Dafür gibt es gute Gründe: https://unix.stackexchange.com/questions/27297/why-doesnt-nix-keep-track -der-dateierstellungszeit

Ich bin mir ziemlich sicher, dass der Zeitpunkt, an dem Sie create time anrufen, tatsächlich ist mtime- kein Problem.


Von man exiv2:

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.


Siehe Option -t, um das Gegenteil zu tun.

Volker Siegel
quelle
7

Wenn Sie das Exiftool über CPAN installieren, können Sie das folgende Skript ausführen, vorausgesetzt, alle Ihre Dateien befinden sich in einem Verzeichnis mit dem Namen "all".

#!/bin/sh
for i in all/*; do
    SPEC=`exiftool -t -s -d "%Y-%m-%d %H:%M:%S" -CreateDate "$i"`
    read X DATE <<<${SPEC}
    echo "$i:$DATE"
    touch -d "$DATE" "$i"
done
Joel Taylor
quelle
Können Sie beschreiben, was dieses Skript tut? Insbesondere die Argumente fürexiftool
user5359531
5

Unter der Annahme, wie von 'Volker Siegel' erwähnt, dass Sie wahrscheinlich mtime meinen, würde ich einfach exiftools builtin function verwenden.

mögen:

 $ exiftool "-DateTimeOriginal>FileModifyDate" test.jpg

Dies nimmt die "exif field" DateTimeOriginal "-Informationen und verwendet sie, um die Dateisystem-Änderungsdatum / Zeit-Informationen der Datei" test.jpg "festzulegen.

Beispiel:

$ 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
6ugr3
quelle
3

Mit ExifTool können die meisten EXIF-Informationen gelesen und bearbeitet werden, einschließlich des Extrahierens der EXIF-Tags "Date / Time Original" oder "Create Data". Mit diesen Informationen können Sie die Dateien umbenennen oder ihre Zeitstempel ändern. Beispielsweise:

find -name '*.jpg' | while read PIC; do
    DATE=$(exiftool -p '$DateTimeOriginal' $PIC |
    sed 's/[: ]//g')
    touch -t $(echo $DATE | sed 's/\(..$\)/\.\1/') $PIC
done

Dadurch werden alle JPG-Dateien im aktuellen Verzeichnis gefunden und die Zeitstempel aktualisiert.

Wenn Sie diesen Dateien auch einen Namen geben möchten, der auf diesem Datum basiert (dies ist in der Regel praktisch), fügen Sie diesen Namen mv -i $PIC $(dirname $PIC)/$DATE.jpgvor der doneZeile hinzu.

krowe
quelle
3

Dies kann auch mit folgendem jheadBefehl geschehen:

$ jhead -ft file.jpg
SkyRaT
quelle
Für Jhead 3.0 ist die Option -dsft. -ftmacht das Gegenteil.
Tesquin Crydd