Dateien rekursiv löschen

Datum: 2003-03-11
Quelle: suse-linux

Worum ging es?

Das Kommando rm -r ist in der Lage, Dateien und Verzeichnisse rekursiv zu löschen. Manchmal kann man dies aber nicht so ohne weiteres - sei es, dass man bestimmte Dateien davon ausnehmen will, vorher von einigen Dateien ein Backup anfertigen will ... Neben find kann man sowas natürlich auch in der Shell realisieren.

Code
# function
recursion {
  cd "$1"
  for i in * .[^.]* ..?*; do
    if test -d "$i"; then
      recursion "$i"
      cd "$1"
      rmdir -- "$i"
    elif test -e "$i"; then
      rm -- "$i"
    fi
  done
}
# main
recursion .
Beschreibung

Zuerst wird eine Funktion rekursion definiert, die sich für jeden Verzeichniseintrag im aktuellen Verzeichnis selbst rekursiv aufruft und ansonsten die Datei löscht. Das Script ist ein Template, innerhalb von rekursion können natürlich beliebige Kommandos ausgeführt werden. Gestartet wird die Verarbeitung durch den Aufruf der Funktion mit dem Startverzeichnis als Parameter.