Verzeichnisse lassen sich auf der Kommandozeile mit den Befehlen rmdir, rm und find löschen. Jeder Befehl hat seinen Einsatzzweck: rmdir für leere Verzeichnisse, rm -r für Verzeichnisse mit Inhalt, find für Mustersuche.

Vorsicht: Im Gegensatz zum grafischen Dateimanager landen über die Kommandozeile gelöschte Verzeichnisse nicht im Papierkorb. Die Löschung ist dauerhaft.

Voraussetzungen

Zum Löschen eines Verzeichnisses benötigst du Schreibrechte auf dem übergeordneten Verzeichnis. Ohne diese Berechtigung erscheint die Fehlermeldung „Operation not permitted".

Bei Verzeichnisnamen mit Leerzeichen musst du den Namen in Anführungszeichen setzen oder das Leerzeichen mit einem Backslash maskieren:

rm -r "mein verzeichnis"
rm -r mein\ verzeichnis

Leere Verzeichnisse mit rmdir löschen

Der Befehl rmdir löscht ausschließlich leere Verzeichnisse. Das ist nützlich, wenn du sicherstellen willst, dass nur wirklich leere Verzeichnisse entfernt werden.

rmdir backup

Enthält das Verzeichnis noch Dateien oder Unterverzeichnisse, bricht rmdir mit einer Fehlermeldung ab:

rmdir: 'backup' konnte nicht entfernt werden: Das Verzeichnis ist nicht leer

Mit der Option -p löschst du eine Verzeichniskette, wenn alle Verzeichnisse im Pfad leer sind:

rmdir -p projekte/archiv/2023

Dieser Befehl entfernt 2023, dann archiv, dann projekte - vorausgesetzt, jedes Verzeichnis ist nach dem Löschen des Unterverzeichnisses leer.

Verzeichnisse mit rm löschen

Der Befehl rm ist flexibler als rmdir. Mit der Option -r (rekursiv) löschst du Verzeichnisse mitsamt ihrem gesamten Inhalt.

Verzeichnis mit Inhalt löschen

rm -r projektordner

Dieser Befehl entfernt das Verzeichnis projektordner und alle darin enthaltenen Dateien und Unterverzeichnisse.

Löschen ohne Rückfragen

Die Option -f unterdrückt Rückfragen bei schreibgeschützten Dateien:

rm -rf build_output

Vorsicht: Diese Kombination löscht alles im angegebenen Pfad ohne jede Bestätigung. Ein Tippfehler kann erheblichen Datenverlust verursachen.

Mehrere Verzeichnisse gleichzeitig löschen

Gib mehrere Verzeichnisnamen durch Leerzeichen getrennt an:

rm -r logs temp cache

Mit Bestätigung löschen

Die Option -I fragt einmal nach, bevor mehrere Dateien oder ein Verzeichnis rekursiv gelöscht wird:

rm -rI downloads

Ausgabe:

rm: 1 Argument rekursiv entfernen? y

Bestätige mit y und Enter.

Muster verwenden

Mit Wildcards löschst du mehrere Verzeichnisse nach einem Muster:

rm -r *_backup

Dieser Befehl entfernt alle Verzeichnisse und Dateien, deren Name auf _backup endet.

Prüfe vorher mit ls, welche Einträge betroffen sind:

ls -d *_backup

Verzeichnisse mit find löschen

Der Befehl find sucht Verzeichnisse nach bestimmten Kriterien und kann diese direkt löschen. Das ist praktisch für automatisierte Aufräumarbeiten.

Verzeichnisse nach Namensmuster löschen

Dieser Befehl findet alle Verzeichnisse mit dem Namen __pycache__ und löscht sie:

find . -type d -name '__pycache__' -exec rm -r {} +

Erklärung:

  • . - Suche im aktuellen Verzeichnis und allen Unterverzeichnissen
  • -type d - Nur Verzeichnisse suchen
  • -name '__pycache__' - Verzeichnisse mit diesem Namen
  • -exec rm -r {} + - Gefundene Verzeichnisse an rm -r übergeben

Alle leeren Verzeichnisse löschen

find /pfad -type d -empty -delete

Die Option -delete entfernt die gefundenen leeren Verzeichnisse direkt. Sie funktioniert nur bei leeren Verzeichnissen.

Wichtig: Teste den Befehl zuerst ohne -delete, um zu sehen, welche Verzeichnisse betroffen wären:

find /pfad -type d -empty

Verzeichnisse nach Alter löschen

Dieser Befehl löscht alle Verzeichnisse im Ordner backups, die älter als 30 Tage sind:

find /var/backups -type d -mtime +30 -exec rm -r {} +

Fehler: Argumentliste zu lang

Bei Verzeichnissen mit sehr vielen Dateien kann rm mit der Fehlermeldung „Argument list too long" abbrechen. Die Anzahl der Dateien überschreitet das Systemlimit.

Lösung: Lösche zuerst die Dateien mit find, dann das leere Verzeichnis:

find /pfad/zum/verzeichnis -type f -delete
rm -r /pfad/zum/verzeichnis

Übersicht der Befehle

BefehlVerwendung
rmdir verzeichnisLeeres Verzeichnis löschen
rm -r verzeichnisVerzeichnis mit Inhalt löschen
rm -rf verzeichnisOhne Rückfragen löschen
rm -rI verzeichnisMit einmaliger Bestätigung löschen
find . -type d -empty -deleteAlle leeren Verzeichnisse löschen

Zusammenfassung

Für leere Verzeichnisse genügt rmdir. Verzeichnisse mit Inhalt löschst du mit rm -r. Der Befehl find eignet sich für das Löschen mehrerer Verzeichnisse nach Mustern oder Kriterien wie Alter oder Name. Alle drei Befehle löschen ohne Papierkorb - prüfe vor dem Ausführen, welche Verzeichnisse betroffen sind.