#!/bin/sh

find . -empty | grep -v EMPTY_FILES > EMPTY_FILES

echo "Ersetze Leerzeichen in Namen durch '_'"
find . -type d -name "* *" | while read -r dir; do
    # echo $dir
    if echo "$dir" | grep -q " " ; then
        new_name=$(echo "$dir" | tr ' ' '_')
        mv "$dir" "$new_name"
        echo "Verzeichnis umbenannt: $dir -> $new_name"
    fi
done

# Zweimal, wenn nicht alles erfasst wurde, weil ein Unterverzeichnis noch nicht umbenannt ist (FIXME: Das geht eleganter)
find . -type d -name "* *" | while read -r dir; do
    # echo $dir
    if echo "$dir" | grep -q " " ; then
        new_name=$(echo "$dir" | tr ' ' '_')
        mv "$dir" "$new_name"
        echo "Verzeichnis umbenannt: $dir -> $new_name"
    fi
done

echo "cam_rename und Verzeichnis umbenennen"
curdir=$(pwd)
#set -x
# der awk Befehl sorgt dafür, dass die Verzeichnisse nach Länge geordnet werden und daher Unterverzeichnisse zuerst behandelt werden
for imgdir in $(find . -type f -name "*.JPG" -exec dirname \{\} \; | sort | uniq | awk '{print length, $0}' | sort -n -r | cut -d' ' -f2-) ; do
    cd $imgdir
    oldimgdir=$(basename $imgdir)
    cam_rename
    imgdate=`find . ! -empty -type f -name "20*.jpg" | sort | head -n1 | sed 's#^\./\(20[0-9]\+\)_.*#\1#'`
    cd ..
    if [ "$imgdate" != "" ] ; then
      mv $oldimgdir "${imgdate}_${oldimgdir}"
    else
      echo "Kein Datum in Verzeichnis $imgdir gefunden -> kann $oldimgdir nicht umbenennen"
    fi
    cd "$curdir"
done
