Foto-Workflow: Taggen, nummerieren und suchen in der bash mit Linux Ubuntu

Foto Workflow mit Linux UbuntuDer 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 🙂

 

Veröffentlicht in Digital Photo Workflow Getagged mit: , , , , ,

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*