Viele Dateien mit EXIF-Daten umbenennen

moonwalker99

Lt. Commander
Registriert
Jan. 2008
Beiträge
1.846
Ich möchte viele Dateien in einem Verzeichnis umbenennen und das Aufnahmedatum dem Dateinamen hinzufügen, also von:

IMAG1500.jpg
IMAG1501.jpg
IMAG1502.jpg
IMAG1503.jpg

zu:

2014-12-03 IMAG1500.jpg
2014-12-03 IMAG1501.jpg
2014-12-04 IMAG1502.jpg
2014-12-04 IMAG1503.jpg

Das müsste mit einem Skript sehr einfach möglich sein. Ich habe schon nach einer Lösung gesucht aber nichts gefunden, was mir weiterhelfen könnte. Hat hier jemand einen Tipp?
 
IrfranView kann mit entsprechendem Plugin die Dateien automatisch umbenennen - eine Anleitung findest du hier bzw. hier.
 
So in etwa?:

Code:
#!/bin/bash
for FILE in $(ls $1 |egrep -i "\.jpg$|\.arw"); do
    CREATEDATE=$(exiftool -EXIF:CreateDate ${FILE})
    read X X JAHR MONAT TAG X X X <<<$(awk '{gsub(/:/," ");print}' <<<${CREATEDATE})
    if [ -n "${JAHR}" ] && [ -n "${MONAT}" ] && [ -n "${TAG}" ]; then
        mv ${FILE} ${JAHR}-${MONAT}-${TAG}_${FILE}
    else
        echo "${FILE} hat kein Erstellungsdatum oder EXIF-Daten nicht vorhanden"
    fi
done

Mußt nur noch die Suchkriterien anpassen oder ls durch find austauschen, wenn Du rekursiv umbenennen willst. (exiftool sollte vorhanden sein, wenn nicht, nachinstallieren)

edit: "kleiner" Fehler beim umbenennen korrigiert und Sicherheitsabfrage eingefügt.
 
Zuletzt bearbeitet:
Twostone schrieb:

Sieht schon ganz gut aus, ein paar Hinweise:

- Leerzeichen im Dateinamen führen zu Problemen
- es wäre schön, wenn man selbst die Dateien angeben könnte anstatt mit ls zu arbeiten. Also z.B. ./rename.sh fotos/IMAG*
 
moonwalker99 schrieb:
- Leerzeichen im Dateinamen führen zu Problemen
Code:
SAVEIFS=${IFS};IFS=$(echo -en "\n\b");for FILE in $(ls $1 | sed -e 's/ /\\ /g' | egrep -i "\.jpg$|\.arw"); do

moonwalker99 schrieb:
- es wäre schön, wenn man selbst die Dateien angeben könnte anstatt mit ls zu arbeiten. Also z.B. ./rename.sh fotos/IMAG*

Code:
for FILE in $(find $PWD -iname $1 -type f -ls -exec echo {} \); do
Wie im Hinweis bereits angegeben, mußt Du nicht mit ls arbeiten. Kannst auch ggf. mit einer Liste an Dateien aus einem Array arbeiten, oder was auch immer. Das bleibt Deiner persönlichen Präferenz überlassen. Ich gebe hier nur Denkanstöße.
 
Zurück
Oben