it-swarm.com.de

Wie benenne ich JPEG-Dateien stapelweise nach dem Bilddatum um und füge eine Zählung hinzu, die für jeden Tag zurückgesetzt wird?

Ich verwende pyrenamer für meine Fotosammlung und es funktioniert bis auf ein Problem hervorragend. Ich möchte, dass Fotos nach dem Datum ihrer Metadaten umbenannt werden, mit einer dreistelligen Zahl am Ende. Jeder Ordner in meiner Bibliothek repräsentiert einen Tag, und ich möchte, dass die Fotos mit den Nummern 001-999 enden, beginnend mit 001 für jeden Ordner. Ein Beispieldateiname wäre 2016-01-31-001.jpg.

Shotwell erstellt die Verzeichnisstruktur beim Import mit einem %Y/%m/%d Struktur in den Optionen, aber wenn ich Pyrenamer rekursiv im ~/Pictures-Verzeichnis verwende, sehe ich nicht das erwartete Ergebnis. Es wird nach Datum umbenannt, aber in allen Ordnern weiter erhöht, anstatt bei 001 für jeden neuen Ordner zu beginnen. Gibt es einen einfacheren Weg, dies zu tun?

Ich weiß, dass ich mehr Metadatenvariablen hinzufügen und nach Stunden, Minuten und Sekunden umbenennen kann, aber dies ergibt längere Dateinamen als ich will. Meine Kamera kann auch mehrere Aufnahmen pro Sekunde machen, was beim Umbenennen problematisch ist.

Was ist der einfachste Weg, dies bitte zu tun? Ich benutze gerne Pyrenamer, aber ein Bash-Skript ist auch in Ordnung.

Aktueller Output:

Pictures/
├── Folder 1/
│   ├── YY-MM-DD-001.jpg
│   └── YY-MM-DD-002.jpg
├── Folder 2/
│   ├── YY-MM-DD-003.jpg
│   └── YY-MM-DD-004.jpg
...

Gewünschte Ausgabe:

Pictures/
├── Folder 1/
│   ├── YY-MM-DD-001.jpg
│   └── YY-MM-DD-002.jpg
├── Folder 2/
│   ├── YY-MM-DD-001.jpg
│   └── YY-MM-DD-002.jpg
...
2
Tom Brossman

So benennen Sie Ihre gesamte Bildbibliothek von JPEG-Fotos in das Format JJJJ-MM-TT-XXX.jpg um, wobei Sie jeden neuen Tag von -001 aufwärts zählen Verwenden Sie diesen Befehl mit exiftool:

exiftool -fileOrder DateTimeOriginal -recurse -extension jpg -extension jpeg -ignoreMinorErrors '-FileName<CreateDate' -d %Y-%m-%d%%-.3nc.%%e ~/Pictures/

Um den Befehl vollständig zu erklären, erfahren Sie hier, wie er funktioniert.

  1. exiftool startet das Skript.
  2. -fileOrder DateTimeOriginal zwingt exiftool, die Bilder in der Reihenfolge zu verarbeiten, in der sie aufgenommen wurden . Dies ist wichtig, um die Bildnummerierung innerhalb eines Tages in der ursprünglichen chronologischen Reihenfolge beizubehalten.
  3. -recurse verarbeitet Unterverzeichnisse rekursiv. Dies ist hilfreich, wenn Sie Shotwell zum Importieren verwenden, da Fotos in nach Datum geordneten Verzeichnissen abgelegt werden.
  4. -extension jpg -extension jpeg stellt sicher, dass nur JPEG-Dateien verarbeitet werden. (Beachten Sie, dass dies nicht case-spezifisch ist und jpg = JPG, so dass wir alles fangen)
  5. -ignoreMinorErrors Ignorieren Sie alle Fehler, die sich nicht auf das gewünschte Ergebnis auswirken (normalerweise Probleme beim Lesen von Tags, die für diese Operation nicht erforderlich sind).
  6. '-FileName<CreateDate' Setzt das Erstellungsdatum des Fotos in den Dateinamen.
  7. -d %Y-%m-%d%%-.3nc.%%e Hier -d stellt das gewünschte Ausgabeformat ein. Wir werden ein vierstelliges Jahr mit Bindestrich verwenden, dann einen zweistelligen Monat und einen zweistelligen Tag (%Y-%m-%d) gefolgt von einer dreistelligen Zahl beginnend mit 001 (%%-.3nc), wobei die ursprüngliche Dateierweiterung (.%%e).
  8. ~/Pictures/ ist das letzte Element, es ist nur das Verzeichnis, das exiftool mit dem Befehl verarbeiten soll.

Ein Hinweis zu Fehlern, die -ignoreMinorErrors hilft, aber dennoch wird möglicherweise die Meldung "Warnung: Ungültiges PreviewIFD-Verzeichnis" angezeigt. Dies ist kann ignoriert werden oder " Warnung: In /path/to/problem/image.jpg" sind keine beschreibbaren Tags festgelegt. Das zweite Problem konnte ich nicht lösen, aber ich habe es nur für ein paar Bilder gesehen, deshalb habe ich sie in Nautilus manuell umbenannt, um das Problem zu umgehen.

Dieser Befehl könnte noch verbessert werden, wurde jedoch getestet und funktioniert mit einer großen Fotobibliothek (40 GB, 13000 Bilder). Er ist schnell und erzeugt keine Fehler. Nur das gelegentliche Bild, bei dem ein Tag fehlt, das von den meisten modernen Kameras erstellt wird, kann nicht umbenannt werden .

3
Tom Brossman