#!/bin/bash # Ersetzt Zeichen im Dateinamen rekursiv # Vorlage: http://www.linux-community.de/Community/Fragen/Bash-Rename-Skript # Aufruf des Skriptes auf Korrektheit pruefen if [ -z $1 ];then echo Verwendung: umbenennen "/PFAD" ; exit 0;fi # Meldung ungueltige Kodierung bearbeiten # Ueberpruefung der Installation von convmv inst=`ls /usr/bin/ | grep -c "convmv"` ; case $inst in 0) echo "Warnung: /usr/bin/convmv wurde nicht gefunden. Moechten sie convmv jetzt installieren (j/n)" read SURE case $SURE in j | ja | y | yes) dist=$(cat /etc/issue) cvar=`echo $dist | grep -ci "Ubuntu"` case $cvar in 1) sudo apt-get install convmv;; 0) dvar=`echo $dist | grep -ci "opensuse"` case $dvar in 1) sudo zypper install convmv;; 0) evar=`echo $dist | grep -ci "Debian"` case $evar in 1) sudo dpkg -i convmv.deb;; 0) fvar=`echo $dist | grep -ci "Fedora"` case $fvar in 1) sudo zypper install convmv;; 0) echo "Distribution konnte nicht ermittelt werden. Bitte installieren Sie convmv selbsständig und starten Sie das Skript neu.";; esac ;; esac ;; esac ;; esac ;; n | nein | no) exit;; esac ;; esac convmv -f iso-8859-15 -t utf8 -r "$1" --notest # # Skript Start # find "$1" -depth -name "*" | while read file ; do directory=$(dirname "$file") oldfilename=$(basename "$file") # sed und tr als Mittel der Bearbeitung # Befehle sind so aufgestellt, dass einzelne Aktionen # leicht durch Loeschen zwischen den Pipes # veraendert werden koennen newfilename=$(echo "$oldfilename" | tr "'" "_" | tr '!@#+ ' '_____' | tr '[]{}' '()()()' | sed -e 's/[\`\´\"\]//g' | sed -e 's/\&/and/g' | sed -e 's/[àáâãäå]/ae/g;s/[ÀÁÂÃÄÅ]/Ae/g;s/[éëêè]/e/g;s/[ÈÉÊË€]/E/g;s/[ìíîï]/i/g;s/[ÌÍÎÏ¡]/I/g;s/[òóôõöø]/oe/g;s/[ÒÓÔÕÖ]/Oe/g;s/[ùúûü]/ue/g;s/[ÙÚÛÜ]/Ue/g;s/[ÿý?]/y/g;s/[ÝŸ]/Y/g;s/[æ]/ae/g;s/[Æ]/AE/g;s/[碩]/c/g;s/[Ç]/C/g;s/[ßš]/s/g;s/[$§Š]/S/g;s/[=¦#:~*¿·¸°¯\%";+^˜‰…‡†???•]/_/g;s/[²]/2/g;s/[³]/3/g' | sed -e 's/[^\(\)\.\/\_a-zA-Z0-9-]//g' | tr [:upper:] [:lower:] | iconv -t ascii) # Katastrophenpotential einschraenken if [ "$oldfilename" != "$newfilename" ]; then # Umbenennen beginnen mv -i "$directory/$oldfilename" "$directory/$newfilename" # Benutzer informieren echo ""$directory/$oldfilename" ---> "$directory/$newfilename"" #echo "$directory" #echo "$oldfilename" #echo "$newfilename" #echo fi done exit 0