Schlagwort-Archive: zeichensatz

Umbenennen

Die wie immer üble Ausgangslage, wenn ich Materialienlieferungen für den LFB erhalte:

Auf der Suche nach einem ordentlichen Skript für das Umbenennen von Datei- und Verzeichnisnamen bin ich hier über die Arbeit von Andi Latte gestolpert, die ich nur unwesentlich für meine Bedürfnisse anpassen musste:


#!/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
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:])
# 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

Das nun erträgliche Ergebnis, das eine automatisierte Weiterverarbeitung bei der Umsetzung nach HTML erlaubt:

Da WordPress sicherlich aus dem Skript oben wieder einmal Wurstsalat macht, hier das Skript für den Download: umbenennen_v2.zip und zur Sicherheit auch noch mal bei pastebin.

Nachteil des Skriptes: Der Backslash wird nicht berücksichtigt. Außerdem wäre ein iconv -t ascii nicht schlecht, um die exotischen Zeichen mit zu erwischen, die nicht im Skript selbst auftauchen. Ein paar Dummheiten sind außerdem auch noch drin: Z.B. wird ? am Ende durch _ ersetzt, dabei ist es da schon lange ein y.

Das Grundgerüst steht aber.