[Erledigt] Bash-Script zum Umbenennen einzelner Fotos mit exiftool

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: Bash-Script zum Umbenennen einzelner Fotos mit exiftool

Beitrag von JTH » 10.05.2022 17:00:08

rohodeb hat geschrieben: ↑ zum Beitrag ↑
10.05.2022 16:13:05
Weiß einer Rat?
Das kann so aus mehreren Gründen noch nicht funktionieren:

rohodeb hat geschrieben: ↑ zum Beitrag ↑
10.05.2022 16:13:05

Code: Alles auswählen

for i in DSCF*.JPG
Das ist schonmal eine passende der möglichen Varianten, um deine gesuchten Dateinamen durchzugehen.

rohodeb hat geschrieben: ↑ zum Beitrag ↑
10.05.2022 16:13:05

Code: Alles auswählen

  exiftool -P -"$i"'<DateTimeOriginal' -d PIC_%Y%m%d_%Hh%Mm%Ss$Titel.%%e ./*
Da hapert es aber noch an mehreren Stellen:

rohodeb hat geschrieben: ↑ zum Beitrag ↑
10.05.2022 16:13:05

Code: Alles auswählen

-"$i"'<DateTimeOriginal'
Um eine Datei mit exiftool umzubenennen, muss man anscheinend in das Pseudo-EXIF-Tag FileName schreiben. An der Stelle hat aber der Dateiname der Quelldatei, $i, nichts zu suchen. Das war eigentlich in deinem Eingangsbeitrag schon richtig:

Code: Alles auswählen

'-FileName<DateTimeOriginal'

rohodeb hat geschrieben: ↑ zum Beitrag ↑
10.05.2022 16:13:05

Code: Alles auswählen

PIC_%Y%m%d_%Hh%Mm%Ss$Titel.%%e
Als Best Practice, um jegliche mal denkbaren Probleme hiermit auszuschließen (Leerzeichen in $Titel), würde ich diesen String in "…" verpacken:

Code: Alles auswählen

"PIC_%Y%m%d_%Hh%Mm%Ss$Titel.%%e"

rohodeb hat geschrieben: ↑ zum Beitrag ↑
10.05.2022 16:13:05

Code: Alles auswählen

  exiftool … ./*
Diese nicht weiter beschränkte Wildcard torpediert schließlich das, was du eigentlich vorhast und macht die Schleife irrelevant. Du übergibst exiftool nämlich hier wieder – und das bei jedem Aufruf in der Schleife - die Namen aller Dateien und Unterordner im aktuellen Ordner. Der Aufruf sieht also letzendlich so aus (mehr Leerzeichen für Lesbarkeit):

Code: Alles auswählen

exiftool … DSCF0001.JPG   DSCF0042.JPG   PIC_19700101_00h00m00s_Unix-Epoche.JPG   PIC_19700101_00h42m13s_Unix-Epoche.JPG   Unterordner_1
Du willst aber ja eigentlich nur die Dateien übergeben, die ins Muster DSCF*.JPG passen.

Dafür brauchst du hier überhaupt keine Schleife. Man kann exiftool auch statt eines Ordners, den es durchgehen soll, eine Liste mit Dateien übergeben. Und das geht mit dem Dateinamensmuster in der Shell auch trivial:

Code: Alles auswählen

irgendein_kommando --ein --paar --optionen DSCF*.JPG

Die einzelnen Teile zusammenzusetzen überlass ich mal dir zur Übung ;) Es wird, wie hikaru schon angedeutet hat, wohl nur eine Zeile.
Manchmal bekannt als Just (another) Terminal Hacker.

rohodeb
Beiträge: 119
Registriert: 27.11.2020 09:33:45

Re: Bash-Script zum Umbenennen einzelner Fotos mit exiftool

Beitrag von rohodeb » 11.05.2022 07:29:19

Ja, irgendetwas ist an dem Aufruf von exiftool nicht richtig. Da muss ich mich durcharbeiten.
Auf jeden Fall muss am Ende das zu bearbeitende Foto, bei mir also $i, stehen. Aktuell werden ja mit ./* auch eventuelle Fotos in Unterverzeichnissen berücksichtigt.

rohodeb
Beiträge: 119
Registriert: 27.11.2020 09:33:45

Re: Bash-Script zum Umbenennen einzelner Fotos mit exiftool

Beitrag von rohodeb » 11.05.2022 09:33:57

Ich glaube, jetzt habe ich es.
Den exiftool-Befehl habe ich geringfügig verändert, einzeln probiert und dann in eine Schleife gepackt.
Der Befehl lautet wie folgt:

Code: Alles auswählen

exiftool -P -'filename<DateTimeOriginal' -d PIC_%Y%m%d_%Hh%Mm%Ss$Titel.%%e $i
Die Variable "Titel" wird natürlich vorher im Script festgelegt, "i" ist wieder die Variable der zu findenden Fotos.
Nun erhalte ich nur die Meldungen der geänderten Fotos.

Das sollte es dann gewesen sein. Ich werde das Script mit einer größeren Zahl von Fotos erneut testen, mich dann nochmals melden.

tobo
Beiträge: 1994
Registriert: 10.12.2008 10:51:41

Re: Bash-Script zum Umbenennen einzelner Fotos mit exiftool

Beitrag von tobo » 11.05.2022 09:41:41

rohodeb hat geschrieben:
Aktuell werden ja mit ./* auch eventuelle Fotos in Unterverzeichnissen berücksichtigt.
Als Besonderheit von exiftool, welches mit mehreren Argumenten klar kommt und sowohl Verzeichnisse als auch Dateien verarbeiten kann. Die Shell hängt durch ./* dem Befehl eine Liste aller Dateien des aktuellen Arbeitsverzeichnisses an. Dateien sind Dateien und Verzeichniseinträge.
Das sollte es dann gewesen sein. Ich werde das Script mit einer größeren Zahl von Fotos erneut testen, mich dann nochmals melden.
Willst du mögliche Fehlerquellen reduzieren, dann solltest du deine Variablen (Titel und i) quoten:

Code: Alles auswählen

exiftool -P -'filename<DateTimeOriginal' -d PIC_%Y%m%d_%Hh%Mm%Ss"$Titel".%%e "$i"
Und ganz ohne Schleife dann sowas:

Code: Alles auswählen

exiftool -P -'filename<DateTimeOriginal' -d PIC_%Y%m%d_%Hh%Mm%Ss"$Titel".%%e DSCF*.JPG

rohodeb
Beiträge: 119
Registriert: 27.11.2020 09:33:45

Re: Bash-Script zum Umbenennen einzelner Fotos mit exiftool

Beitrag von rohodeb » 11.05.2022 11:17:10

@tobo, danke für die Tipps, werde ich nachvollziehen und realisieren.

Was bedeutet eigentlich das "quoten"?


rohodeb
Beiträge: 119
Registriert: 27.11.2020 09:33:45

Re: Bash-Script zum Umbenennen einzelner Fotos mit exiftool

Beitrag von rohodeb » 11.05.2022 11:53:53

Aha, danke schön.
ich hatte vorhin schon mal geguckt, wurde aber aus der englischen Beschreibung nicht ganz schlau. Sehr hilfreich ist Dein erster Link.

Damit kann ich dieses Thema als "Erledigt" kennzeichnen.

Vielen Dank noch einmal allen Hilfe leistenden.

Antworten