Bilder mit Sidecard umbenennen

Tobias Bauer, , Lesedauer 2 Minuten.

Ich benenne meine Fotos immer nach einem bestimmten Format. Das hilft mir, Ordnung zu halten und auch, doppelte Dateinamen zu verhindern (z. B. bei Serienaufnahmen oder wenn man mit mehreren Fotografen zusammen arbeitet). Arbeitet man zusätzlich noch mit Sidecard-Files, dann muss die Benennung unbedingt vor der ersten Bearbeitung erfolgen.

Ich nutze für die Bildbearbeitung Darktable. Gegenüber Lightroom habe ich hier keinen entsprechenden Importassistenten, welcher die Umbenennung übernimmt. Man müsste hier mit Lua-Skripten arbeiten. Normalerweise benenne ich meine Bilder einfach vorab mit KRename um und die Sache ist erledigt.

Meine Konventionen sind wie folgt: YYYYMMDD-HHMMSS-XXXX-Schlagwort

Hierbei ist XXXX eine einfache fortlaufende Nummer des aktuellen Imports. Diese hat keine Bedeutung und sorgt nur dafür, dass jedes Bild wirklich eindeutig ist (wichtig für Serienbilder oder wie schon geschrieben, wenn man gleichzeitig noch mit anderen Fotografen zusammen arbeitet).

Vergisst man das jedoch einmal, dann ist das sehr mühsam. Aus diesem Grund habe ich ein kleines Bash-Skript geschrieben, welches die Bilder zusammen mit dem Sidecards umbenennt. Die Exif-Daten lese ich mit exiv2 aus. Dieses Tool unterstützt im Gegensatz zu exif auch das von mir verwendete RAW-Format (DNG).

Das Skript wird direkt im Verzeichnis mit den Bildern aufgerufen. Als Parameter muss noch zusätzlich ein Schlagwort mit angegeben werden.

Bei Darktable muss anschließend das Verzeichnis neu eingelesen werden und das war es auch schon.

#!/bin/bash

# Copyright (C) 2019 Tobias Bauer
# <https://www.tobias-bauer.de/blogbeitrag/bilder-mit-sidecard-umbenennen.html>.
#
# This script is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This script is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with dogtag.  If not, see <http://www.gnu.org/licenses/>.

if [ -z "$1" ]; 
then
  echo "Parameter missing"
  echo
  echo $0 String
  echo
  echo Generates filename like "YYYYMMDD-HHMMSS-XXXX-String"
  exit 1
fi

counter=1
for filename in ./*.DNG; do
  c="$(printf '%04d' "$counter")"
  DATUM=`exiv2 -g'Exif.Photo.DateTimeOriginal' -Pv ${filename} | sed 's/\://g' | sed 's/ /-/g'`
  echo "${filename} -> ./${DATUM}-${c}-$1.dng" 
  mv "${filename}" "./${DATUM}-${c}-$1.dng"
  mv "${filename}.xmp" "./${DATUM}-${c}-$1.dng.xmp"
  counter=$((counter+1))
done