
Der Trend in der Fotografie zieht auch einen klaren Foto workflow in den Vordergrund, oft wird dieser allerdings so gewählt, daß er an ein bestimmtes Betriebssystem (Win, Mac, Linux, ..) bindet oder gar an ein konkretes Programm.
Dabei bringen beinahe alle gängingen Fotoformate Möglichkeiten mit, um erste Schritte des Foto workflows system- und anwendungsunabhängig zu gestalten. Unter Linux Ubuntuist die bash die schnellste Variante um die ersten Schritte des Foto workflows auszuführen. Folgend werden auf Kommandozeile die Metainformation bzgl. Aufnahmeort und bei JPGs auch ein Kommentar direkt in das Foto gespeichert. Mit einem Skript werden alle Files in einem Ordner umbenannt und abschließend wird gezeigt, wie man diese beiden Schritte auch sehr schnell und effektiv bei einer späteren Suche nutzen kann.
Schreiben der IPTC Daten mit Exiftool
Fotos versehen per ExifTool (Linux, Win, Mac,…) mit zumindest den folgenden Informationen:
- Copyright
- Aufnahmeland
- Aufnahmebezirk
- Aufnahmestadt
- Kommentar
So wird zum Beispiel ein Ausflug mit der PNU (Pusan National University) in Korea mit zwei exiftool Kommandos versehen:
exiftool -overwrite_original -CopyrightNotice=„MiKa“ -Country-PrimaryLocationCode=“KOR“ -Country-PrimaryLocationName=“Korea“ -Province-State=“Gyeongsangbuk-do“ -City=“Hoeryongpo“ *.JPG
exiftool -overwrite_original -comment=„Ausflug mit PNU Pusan National University“ *.JPG
Die geografische Zuordnung ist nicht immer ganz einfache, für Südkorea findet man die Info zB. hier.
Auf diesem Weg sind die Daten direkt im Foto (zB. JPG) gespeichert und stehen damit auch allen Programmen und auf allen Systemen zur Verfügung. Eine Alternative ist es, diese Daten in XMP sidecar files zu speichern.
Fotodateien umbenennen und durchnummerieren mit führenden Nullen
Wenn die Dateien von der Kamera auf das System kopiert werden haben sie üblicherweise ein Prefix gefolgt von einer Nummerierung. Oft möchte man einen etwas aussagekräftigeren Dateinamen, wie im Beispiel die Aufnahmen aus dem Juli 2008:
DSC_4762.JPG => 200807001001.JPG
DSC_4763.JPG => 200807001002.JPG
DSC_4764.JPG => 200807001003.JPG
Für mich habe ich ein Dateinamenformat in der Form festgelegt:
YYYYMMFFFBBB.JPG
Dabei sind:
Y…das Aufnahmejahr
M…das Aufnahmemonat
F…das shooting in diesem Monat oder bei gescannten Filmen die Filmnr. in dem Monat
B…das Bild innerhalb des shootings / Monats
Unter Linux Ubuntu kann man das im Terminal schnell erledigen, dazu habe ich ein paar Zeilen zusammengeschrieben die den Inhalt eines Verzeichnisses in einem Rutsch umbenennen:
#!/bin/bash # V1.0 @ www.HanBlog.net if [ -z ${2} ] ; then echo "Das Prefix und die Dateierweiterung muss in der Form eingegeben werden:" echo "./PicRename.sh Newprefix Dateierweiterung" exit 1 fi x=1 for Filename in *.${2} do x=$((${x}+1)) done Dateianzahl=$((${x}-1)) Fortsetzen="n" echo ; echo "Beispiel:" ${1}"001."${2}; echo "Sollen "${Dateianzahl} ${2} "Dateien umbenannt werden (y/n)?"; read Fortsetzen if [ "${Fortsetzen}" != "y" ] && [ "${Fortsetzen}" != "Y" ];then echo "Keine Files umbenannt." exit; fi x=1 for Filename in *.${2} do mv ${Filename} 'printf ${1}"%03d."${2} ${x}' x=$((${x}+1)) done echo ${Dateianzahl}" Files umbenannt."
Wenn man noch keine eigenen Skripts laufen hat, dann am besten das Verzeichnis:
~/bin
anlegen und dieses im File ~/.bashrc auch als Pfad eintragen, damit man im Terminal überall darauf zugreifen kann:
# add my own export PATH=$PATH':~/bin'
Im Verzeichnis ~/bin nun ein File mit dem Namen: PicRename.sh anlegen und das Skritp reinkopieren. Die Zugriffsrechte der Datei müssen jetzt noch mit chmod gesetzt werden damit sie auch ausgeführt werden kann:
mika@office-terminal:~/Bilder/TimeBased/2008/07$ chmod 755 PicRename.sh mika@office-terminal:~/Bilder/TimeBased/2008/07$
Nun einfach im Terminal zum Verzeichnis mit dem shooting navigieren und mit PicRename.sh umbenennen, an den Prefix 200807001 wird noch ein dreistelliger Zähler angehängt, mit führenden Nullen und berücksichtigt werden nur files mit der Endung JPG:
mika@office-terminal:~/Bilder/TimeBased/2008/07$ PicRename.sh 200807001 JPG 3 Files umbenannt. mika@office-terminal:~/Bilder/TimeBased/2008/07$
eingeben und schon werden die Dateien entsprechend umbenannt 🙂
Suchen aller Fotos nach einem Metatag bzw. Text im JPG Kommentar
Wenn man nun seine Fotos nach diesem Weg getagged und sortiert hat, dann will man dies natürlich auch nützen. Zum Beispiel in dem man alle Urlaubsfotos sucht, die man im koreanischen Ort Imlang (manchmal auch Imrang) gemacht hat. Unter Linux gibt es dazu das feine Programm grep mit dem Files durchsucht werden können:
grep -E -r "(Imlang|Imrang)" * > Koreafotos.txt
Damit werden mit dem regular expression syntax rekursiv (auch mit allen Unterverzeichnissen) alle files nach dem String Imlang und Imrang durchsucht. Das Ergebnis wird in das file Koreafotos.txt gespeichert.
Related Links
Georeferenzieren / -taggen von Fotos
JPG Kommentar als Archivierungshilfe
Photoworkflow mit Linux
ExifTool SW
Bibble Labs SW
gThumb SW
digiKam SW
—
bash-Programmierung gehört nicht zu meiner großen Leidenschaft, elegantere Wege oder Links zu ähnlichen Skripts sind in Form eines Kommentars willkommen 🙂
Eine Antwort auf „Foto-Workflow: Taggen, nummerieren und suchen in der bash mit Linux Ubuntu“
Das Skript ist fehlerhaft.
Die Befehlszeile für die Umbenennung muss so lauten:
mv ${Filename} $(printf ${1}“%03d.“${2} ${x});
In deiner Version wurden alle Dateien gelöscht und die letzte Datei umbenannt. Mit einem Test hättest du das herausfinden können.