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.