Mit jhaed können Dateinamen auf Basis von EXIF-Informationen verändert werden.
Hier ein Beispielscript, das alle Bilder eines Ordners nach dem Aufnahmedatum mit aufsteigendem Zähler sortiert:
#! /bin/bash function err_text { while [ $# -gt 0 ] ; do echo "$1" 1>&2 shift done echo "`basename $0` [options] folder [out-folder]" 1>&2 echo 1>&2 echo "folder - Ordner, in dem sich die zu sortierenden Fotos befinden" 1>&2 echo "out-folder - optionaler Ausgabeordner" 1>&2 echo 1>&2 echo "Optionen:" 1>&2 echo "-f filename Dateiname, der an den Zähler angehängt werden soll" 1>&2 echo "-n number of digit Anzahl der Stellen des Zählers" 1>&2 echo "-e extended digit an den Zähler wird eine zusäzliche 0 angehängt" 1>&2 exit 1 } # Sortieren und überprüfen der Parameter (":" bedeutet, dass der vorangestellte Parameter # zusätzlich einen Wert benötigt) #echo --- $@ set -- `getopt "f:n:e" "$@"` || err_text # Startparameter setzen basedir="$PWD" filename="Bild" nod=3 ed="" # Parameter in Endlosschleife abfragen # Bei Parametern mit Übergabeparameter muss stets ein "shift" ausgeführt werden! while : ; do case "$1" in -f) shift; filename="$1";; -n) shift; nod=$1;; -e) ed="0";; --) break;; esac shift [ $# -eq 0 ] && break # Fehler in den angegebenen Parametern done shift [ $# -lt 1 ] && err_text # kein Dateiname wurde übergeben folder=`pwd`/$1 # Dateien abarbeiten if [ -d "$folder" ]; then if [ "$2" == "" ]; then cd "$folder" else mkdirx "$2" cd "$folder" cp *.* "$2" cd "$2" fi jhead -exonly -n%Y%m%d_%H%M%S *.JPG > /dev/null 2>&1 jhead -exonly -n%Y%m%d_%H%M%S *.jpg > /dev/null 2>&1 jhead -exonly -n%Y%m%d_%H%M%S *.jpeg > /dev/null 2>&1 jhead -exonly -n%Y%m%d_%H%M%S *.JPEG > /dev/null 2>&1 jhead -exonly -nf%0${nod}i${ed}_"$filename" *.jpg > /dev/null 2>&1 pwd ls -1 *.jpg else err_text "`basename $0` - Ordner '$folder' existiert nicht" fi # http://blog.falco2.de/linux/konsole-linux/konsole-bild-bilder-was-dazu-gehort/ # http://techbase.kde.org/index.php?title=Development/Tutorials/Shell_Scripting_with_KDE_Dialogs_%28de%29