Foto-Dateinamen formatiert umbenennen (gelöst)

Du hast Probleme mit Deinem eMail-Programm, Webbrowser oder Textprogramm? Dein Lieblingsprogramm streikt?
Antworten
fischig
Beiträge: 3640
Registriert: 24.12.2019 12:25:08
Lizenz eigener Beiträge: MIT Lizenz

Foto-Dateinamen formatiert umbenennen (gelöst)

Beitrag von fischig » 11.03.2024 09:37:20

ich habe hier zwei Sorten Urlaubsfotos auf dem Debian-Rechner in zwei Verzeichnissen. Die eine Sorte stammt aus der Speicherkarte einer Kleinbildkamera. Das Dateiormat ist: IMG_[12345].jpg. Im Dateinamen steht also außer dem IMG_* nur eine Nummer. Das Datum des Fotos sehe ich in den Dateieigenschaften per ls -l oder im GUI-Dateimanager. Die andere Sorte wurde mit der Kamera eines Händis aufgenommen. Hier sieht das Dateiformat so aus: IMG_[jjjjmmdd]_[1234].jpg. Kann mir jemand einen Shell-Befehl geben, mit dem ich die Daten aus den Dateieigenschaften der Kleinbildfotos so in den Dateinamen einfüge, dass er dem Format der Händifotos entspricht. Gern auch Bildbetrachter nennen, der sowas kann.
Mit rename wär' vielleicht was möglich, aber wegen der Datumsübernahme ist es wohl etwas komlizierter als in hikarus Beispiel
hikaru hat geschrieben: ↑ zum Beitrag ↑
28.06.2021 18:59:15
Falls es doch mal etwas komplizierter wird, könnte man Debianrename benutzen:

Code: Alles auswählen

$ rename -v -n 's/^/rot_/' *.png
rename(0001.png, rot_0001.png)
rename(0002.png, rot_0002.png)
Wie das mit dem formatierten Umbenennen in geeqie gehen könnte ist mir nicht klar geworden. ¹⁾
¹⁾ viewtopic.php?t=181387


Das einzige was ich könnte, wäre ein Pascal-Programm zu schreiben, aber das ist mir zuviel Bohai. Mit shell-Syntax tu' ich mich schwer. Im Netz finde ich nichts (oder mir fallen die zielführenden Suchbegriffe nicht ein).
Zuletzt geändert von fischig am 11.03.2024 21:07:59, insgesamt 1-mal geändert.

Benutzeravatar
thunder11
Beiträge: 1343
Registriert: 19.04.2023 09:08:30

Re: Foto-Dateinamen formatiert umbenennen

Beitrag von thunder11 » 11.03.2024 10:22:38

Z.b. mit exiftool (aus Debianlibimage-exiftool-perl) Hatte mir das mal aufgeschrieben
Beispiel:

Code: Alles auswählen

 ls -A /home/thunder/Bilder/Import/exiftool/
0012.jpg  0014.jpg  0016.jpg  0018.jpg  0020.jpg  0022.jpg  0029.jpg  0031.jpg
0013.jpg  0015.jpg  0017.jpg  0019.jpg  0021.jpg  0023.jpg  0030.jpg

Code: Alles auswählen

thunder@XFCE:~/Bilder/Import/exiftool$ exiftool -P -'Filename<DateTimeOriginal' -d %Y-%m-%d_%Hh%Mm%S.%%e ./*
   15 image files updated
Ergebnis:

Code: Alles auswählen

thunder@XFCE:~$ ls -A /home/thunder/Bilder/Import/exiftool/
2015-07-09_12h35m36.jpg  2015-07-31_15h35m02.jpg  2015-10-10_16h22m23.jpg  2015-10-18_17h42m07.jpg
2015-07-09_12h35m46.jpg  2015-07-31_15h35m33.jpg  2015-10-10_16h22m33.jpg  2015-10-18_17h42m20.jpg
2015-07-09_12h36m07.jpg  2015-10-10_16h21m24.jpg  2015-10-18_17h41m42.jpg  2015-10-18_17h42m33.jpg
2015-07-31_15h34m29.jpg  2015-10-10_16h22m07.jpg  2015-10-18_17h41m56.jpg
thunder@XFCE:~$
Datumsformat kann man ja nach Geschmack anpassen. Jedoch ohne Uhrzeit gibt es eine Fehlermeldung,
wenn mehre Bilder vom gleichen Tag stammen.

fischig
Beiträge: 3640
Registriert: 24.12.2019 12:25:08
Lizenz eigener Beiträge: MIT Lizenz

Re: Foto-Dateinamen formatiert umbenennen

Beitrag von fischig » 11.03.2024 10:58:43

Danke für den Hinweis!

Das muss ich erst durchdenken, ob das Ersetzen des Dateinamens für mich Sinn macht. Ich will ihn ja im Prinzip ergänzen.

Hintergrund des Vorhabens: Ich will alle Dateien datumssortiert überprüfen. Die Uhrzeit betrachte ich als unwichtig - ob sie stören kann ist mir noch unklar.

Huo
Beiträge: 614
Registriert: 26.11.2017 14:03:31
Wohnort: Freiburg

Re: Foto-Dateinamen formatiert umbenennen

Beitrag von Huo » 11.03.2024 11:09:21

Ich würde es so machen:

Code: Alles auswählen

exiftool '-FileName<CreateDate' -d %%f_%Y-%m-%d.%%e ./*
Aus IMG_0991.jpg wird so IMG_0991_2010-12-26.jpg – Uhrzeit kann man wegen Übernahme des Originaldateinamens getrost weglassen.

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

Re: Foto-Dateinamen formatiert umbenennen

Beitrag von tobo » 11.03.2024 11:13:53

Mit anzupassendem DIR:

Code: Alles auswählen

for file in DIR/*; do time=$(stat -c'%w' "$file" | sed 's/-//g;s/ .*//'); rename -n 's/IMG_/IMG_'"$time"'_/' "$file"; done
Falls das Format und die Zeiten in der Ausgabe stimmen, dann den Simulationsschalter `-n' des renames entfernen.

fischig
Beiträge: 3640
Registriert: 24.12.2019 12:25:08
Lizenz eigener Beiträge: MIT Lizenz

Re: Foto-Dateinamen formatiert umbenennen

Beitrag von fischig » 11.03.2024 11:14:57

@Huo
Aus IMG_0991.jpg wird so IMG_0991_2010-12-26.jpg

Danke! Das ist, was ich suche. Aber die (alte) Nummer im Dateinamen müsste nach dem Datum kommen.
Was bedeutet %%e

Huo
Beiträge: 614
Registriert: 26.11.2017 14:03:31
Wohnort: Freiburg

Re: Foto-Dateinamen formatiert umbenennen

Beitrag von Huo » 11.03.2024 11:30:39

fischig hat geschrieben: ↑ zum Beitrag ↑
11.03.2024 11:14:57
Was bedeutet %%e
%%e bedeutet, dass die ursprüngliche Dateierweiterung (z.B. .jpg) übernommen wird. %%f steht für den gesamten Namensanteil (z.B. IMG_0991). Deshalb ist wohl Dein Wunsch, das Datum zwischen IMG und Nummer zu schieben, mit einer reinen exiftool-Lösung nicht machbar, sondern eher z.B. mit einer sed/rename-Lösung, wie von tobo vorgeschlagen. Allerdings funktioniert sein Befehl bei mir nicht:

Code: Alles auswählen

rename: Nicht genug Argumente

Edit:
Wie von thunder11 unten empfohlen, am besten Namen nicht "splitten", sondern nach hinten schieben. :D
Zuletzt geändert von Huo am 11.03.2024 11:36:24, insgesamt 2-mal geändert.

Benutzeravatar
thunder11
Beiträge: 1343
Registriert: 19.04.2023 09:08:30

Re: Foto-Dateinamen formatiert umbenennen

Beitrag von thunder11 » 11.03.2024 11:33:08

das %%F einfach nach hinter verschieben

Code: Alles auswählen

exiftool '-FileName<CreateDate' -d %Y-%m-%d.%%e_%%f ./*
[/s]

dann so:
2015-09-19.JPG_IMG_0008


war nix :facepalm:
Zuletzt geändert von thunder11 am 11.03.2024 11:38:09, insgesamt 1-mal geändert.

fischig
Beiträge: 3640
Registriert: 24.12.2019 12:25:08
Lizenz eigener Beiträge: MIT Lizenz

Re: Foto-Dateinamen formatiert umbenennen

Beitrag von fischig » 11.03.2024 11:36:29

@tobo
Ebenfalls danke!
funktioniert noch nicht ganz. time liefert offenbar das aktuelle Datum (man time?). Ich brauche aber das der jeweiligen Datei.
Huo hat geschrieben:Allerdings funktioniert sein Befehl bei mir nicht:
Hier schon. Ich habe das Kommando im Verzeichnis, also ohne DIR/ ausgeführt.

Huo
Beiträge: 614
Registriert: 26.11.2017 14:03:31
Wohnort: Freiburg

Re: Foto-Dateinamen formatiert umbenennen

Beitrag von Huo » 11.03.2024 11:46:56

Code: Alles auswählen

exiftool '-FileName<CreateDate' -d %Y-%m-%d_%%f.%%e ./*
:wink:

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

Re: Foto-Dateinamen formatiert umbenennen

Beitrag von tobo » 11.03.2024 11:50:07

fischig hat geschrieben: ↑ zum Beitrag ↑
11.03.2024 11:36:29
funktioniert noch nicht ganz. time liefert offenbar das aktuelle Datum (man time?). Ich brauche aber das der jeweiligen Datei.
%w ist das Datum der Erstellung der Datei (birth). Du schaust am Original und nicht an einer gerade erstellten Testdatei? Mit `stat DATEI' siehst du alle Daten einer DATEI.
EDIT: Womöglich ist %x besser?!
EDIT2: time ist hier nur eine Variable, die die Ausgabe des stat-Befehls aufnimmt, welche mit sed noch bearbeitet wird. Relevant wäre also `man stat'.

@Huo:
Hast du das richtige rename (Paket rename)?

Code: Alles auswählen

$ update-alternatives --list rename
/usr/bin/file-rename
$
Zuletzt geändert von tobo am 11.03.2024 12:15:46, insgesamt 3-mal geändert.

Benutzeravatar
thunder11
Beiträge: 1343
Registriert: 19.04.2023 09:08:30

Re: Foto-Dateinamen formatiert umbenennen

Beitrag von thunder11 » 11.03.2024 11:52:57

Huo hat geschrieben: ↑ zum Beitrag ↑
11.03.2024 11:46:56

Code: Alles auswählen

exiftool '-FileName<CreateDate' -d %Y-%m-%d_%%f.%%e ./*
:THX:
Hatte das auch schon bemerkt. Bloss %%f und %%e waren bei mir vertauscht. :roll:

Aus

Code: Alles auswählen

IMG_0010.JPG
wird nun

Code: Alles auswählen

2015-10-10_IMG_0010.JPG

Huo
Beiträge: 614
Registriert: 26.11.2017 14:03:31
Wohnort: Freiburg

Re: Foto-Dateinamen formatiert umbenennen

Beitrag von Huo » 11.03.2024 11:58:34

tobo hat geschrieben: ↑ zum Beitrag ↑
11.03.2024 11:50:07
@Huo:
Hast du das richtige rename (Paket rename)?

Code: Alles auswählen

$ update-alternatives --list rename
/usr/bin/file-rename
$
Ja, das war mein Fehler. Ich war gerade unter Manjaro unterwegs und hatte ein rename aus dem Paket util-linux. Jetzt unter Debian, mit dem "richtigen" rename, klappt es einwandfrei. :THX: (Nachtrag: Unter Arch/Manjaro stellt Paket perl-rename das "richtige" rename bereit :wink:. )

fischig
Beiträge: 3640
Registriert: 24.12.2019 12:25:08
Lizenz eigener Beiträge: MIT Lizenz

Re: Foto-Dateinamen formatiert umbenennen

Beitrag von fischig » 11.03.2024 12:19:14

tobo hat geschrieben: Du schaust am Original und nicht an einer gerade erstellten Testdatei?
Ach du Sch... Ja, ich hatte ein neues Verzeichnis erstellt, der Hinweis auf -n war mir -ängstlich wie ich bin - zu unsicher.

Ich glaub' ich hab's: ich muss stat

Code: Alles auswählen

-c'%w'
durch

Code: Alles auswählen

stat -c'%y'
(%y=Menschenlesbare Zeit der letzten Datenänderung) ersetzen. Die Logik der Datumsklassifikation in Linux/Unix erschließt sich mir leider nicht. Ich denke aber, hier ist dieses Datum das „reale“ „Geburts“datum der Datei.

edit:
tobo hat geschrieben:EDIT2: time ist hier nur eine Variable, die die Ausgabe des stat-Befehls aufnimmt, welche mit sed noch bearbeitet wird.
Jetzt geschnallt, danke!
tobo hat geschrieben:Relevant wäre also `man stat'.
Nach dem Hinweis auf „Testdatei“ realisiert.
tobo hat geschrieben:EDIT: Womöglich ist %x besser?!
, s.o.

Antworten