staging.inyokaproject.org

Datum mehrer Dateien aendern

Status: Gelöst | Ubuntu-Version: Ubuntu 16.04 (Xenial Xerus)
Antworten |

renewehle

Anmeldungsdatum:
7. Juni 2006

Beiträge: 189

Hallo,

ich habe ein neuen Fotoapparat und und da versehentlich das Datum und die Uhrzeit zwar richtig aber das Jahr falsch eingestellt.

Da ich die Fotos chronologisch aufbauen lassen, muss jedoch das Datum korrekt sein.

Wie kann ich die Jahreszahl von ueber 500 Fotos aendern?

Fuer einzelne Fotos konnte ich den Befehl "touch" finden, aber da muss man das komplette Datum und die Uhrzeit mit dazuschreiben, das ist bei 500 Fotos sehr muehselig.

Gibt es einen besseren Weg? Ich will ja wirklich nur die Jahreszahl von 2017 auf 2016 aendern.

Vielen Dank vorab fuer Eure Mithilfe.

frostschutz

Avatar von frostschutz

Anmeldungsdatum:
18. November 2010

Beiträge: 7795

Schau dir mal exiftool, -globalTimeShift an, oder -TAG+=VALUE

Wenn du danach suchst findest sicher auch eine genauere Anleitung. Selbst hab ich es noch nicht gebraucht. 😉

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17630

Geht es um das Dateidatum oder die exif-Informationen oder um beide?

Für das Dateidatum geht das mit dem praktischen Script addOneYear.sh und find.

1
LC_ALL=C  find -name "*1.JPG" -exec ./addOneYear.sh {} ";"

Das LC_ALL=C wird benötigt, um das kaputte US-Datumsformat zu schlucken. Ich habe das Dateinamensmuster auf *1.JPG eingeschränkt, um im Fehlerfall weniger korrigieren zu müssen.

Das Script sieht so aus:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#!/bin/bash 
#
# Invocation: 
#
name=$1
datum=$(stat -c %y $name | sed 's/\.0.*//')
# 2016-12-23 12:07:52
ndat=$(date -d "$datum +1year")
# echo touch $name -d "$ndat" 
touch $name -d "$ndat" 

und liegt beim Aufruf da, von wo aus ich find aufrufe.

Wenn Du erst die echo-Zeile aktivierst, und die darunter deaktivierst, siehst Du, was das Script aufrufen will. Ob touch das Datum auch schluckt kann man so leider nicht prüfen.

Touch mit -m ändert nur die Modifikationszeit der Datei. Womöglich geht es Dir darum.

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

user_unknown schrieb:

Das Script sieht so aus:

Vorsicht ! - gerade bei Dateinamen diverser "Medien" kommen durchaus mal Leerzeichen vor. Deshalb unbedingt die Variablen mit den Namen "quoten":

#!/bin/bash 
#
# Invocation: 
#
name=$1
datum=$(stat -c %y $name | sed 's/\.0.*//')
# 2016-12-23 12:07:52
ndat=$(date -d "$datum +1year")
# echo touch  "$name"  -d "$ndat" 
touch  "$name"  -d "$ndat" 

LG,

track

renewehle

(Themenstarter)

Anmeldungsdatum:
7. Juni 2006

Beiträge: 189

Das Script funktioniert sehr gut, aber ich wollte ein Jahr zurueck ☺ Was muss ich im Script aendern? Einfach das "+" durch ein "-" reicht da nicht wie ich festgestellt habe.

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Ok, da ist er wohl etwas zickig. Aber mit dem Stichwort "ago" geht es direkt:

track@track:~$ datum="2016-12-23 12:07:52"
track@track:~$ ndat=$(date -d "$datum 1year ago")
track@track:~$ echo "$ndat"
Mi 23. Dez 12:07:52 CET 2015 

Solche Hinweise findest Du übrigens unter info date im Abschnitt "Date input Formats".

LG,

track

renewehle

(Themenstarter)

Anmeldungsdatum:
7. Juni 2006

Beiträge: 189

Super, vielen Dank. Auch fuer den Hinweis mit der Anleitung.

Antworten |