Datum: 2004-09-29
Quelle: suse-programming-e
Alle Dateien in einem Verzeichnis sollen in zu ihren Endungen passende Unterverzeichnisse verschoben werden.
# lies alle Eintraege im aktuellen Verzeichnis # read all entries in current directory (including .dot files) ls -a | while read f; do # weiter, wenn es keine regulaere Datei ist / skip if it's not a regular file test -f "$f" || continue # Endung ermitteln (Teil nach dem letzten Punkt) / get extension (part after last dot) ext="`echo \"$f\" | sed 's/.*\.//'`" # keine Endung: weiter / no extension: skip test "$f" = "$ext" && continue # in Kleinbuchstaben umwandeln, um pdf-, PDF-, Pdf-Verzeichnisse zu verhindern # translate to lowercase to avoid pdf, PDF, Pdf ... directories ext="`echo \"$ext\" | tr '[:upper:]' '[:lower:]'`" # Verzeichnis anlegen, wenn nicht existent / create directory if it does not exist test -d "$ext" || mkdir "$ext" # Datei in das Verzeichnis verschieben / move file into directory mv "$f" "$ext" done
Die Erklärungen finden sich diesmal im Source-Code, da ich die Lösung damals auch so gepostet hatte.