Einführung

Digitalkameras speichern Bilder oft unter Dateinamen wie DSC00523.jpg. Mit diesen nicht sprechenden Namen kann ich nicht viel anfangen. Das Datum und die Uhrzeit des Fotos ist für den Dateinamen viel besser geeignet.

EXIF-Daten auslesen

Die Digitalkamera speichert das Datum und die Uhrzeit in den so genannten EXIF-Tags. Mit jhead kann man diese Tags auslesen und bearbeiten.

Mit jhead dateiname.jpg kann man sich die EXIF-Tags anzeigen lassen:

emanuel@discordia:~
$ jhead DSC00523.JPG
File name    : DSC00523.JPG
File size    : 2277972 bytes
File date    : 2011:02:06 13:45:34
Camera make  : Canon
Camera model : Canon DIGITAL IXUS 80 IS
Date/Time    : 2010:12:27 12:02:37
Resolution   : 2592 x 1944
Flash used   : No
Focal length : 14.3mm  (35mm equivalent: 90mm)
CCD width    : 5.72mm
Exposure time: 0.020 s  (1/50)
Aperture     : f/4.5
Focus dist.  : 6.57m
ISO equiv.   : 800
Whitebalance : Auto
Metering Mode: pattern

In der Zeile Date/Time sieht man, dass das Foto am 27.12.2010 um 12:02:37h erstellt wurde.

Datei umbenennen

Mit jhead kann man nun das Foto nach dem Muster YYYY-mm-dd-HH-MM-SS umbenennen. Dies geschieht mit der Option -nf von jhead.

emanuel@discordia:~
$ jhead -nf%Y-%m-%d_%H-%M-%S DSC00523.JPG
DSC00523.JPG --> 2010-12-27_12-02-37.jpg

Kann das Erstellungsdatum und die Erstelungsuhrzeit nicht aus den EXIF-Daten herausgelesen werden, wird der Zeitstempel der Datei verwendet.

In der Manpage von jhead sieht man, wie sich der Format-String zusammensetzen lässt:

%H Hour in 24-hour format (00 - 23)
%j Day of year as decimal number (001 - 366)
%m Month as decimal number (01 - 12)
%M Minute as decimal number (00 - 59)
%S Second as decimal number (00 - 59)
%w Weekday as decimal number (0 - 6; Sunday is 0)
%y Year without century, as decimal number (00 - 99)
%Y Year with century, as decimal number

Alle Fotos in einem Ordner umbenennen

Mit dem regulären Ausdruck *.[jJ][pP][gG] benennt jhead alle Fotos in einem Ordner um:

jhead -nf%Y-%m-%d_%H-%M-%S *.[jJ][pP][gG]

Alle Fotos umbenennen

Mit find kann man die gesamte Bildersammlung auf einmal umbenennen:

find Daten/Bilder -iname *.jpg -exec jhead -nf%Y-%m-%d_%H-%M-%S {} \;

Im Ordner Daten/Bilder sind alle Fotos gespeichert, welche umbenannt werden.

Automatisieren

Damit man nicht jedes mal den Befehl von jhead eingeben muss, kann man sich ein Alias in the ~/.bashrc schreiben:

alias imagerename="jhead -nf%Y-%m-%d_%H-%M-%S"

Jetzt kann man im jedem Verzeichnis durch imagerename alle Fotos umbenennen.