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 anrm -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
| Befehl | Verwendung |
|---|---|
rmdir verzeichnis | Leeres Verzeichnis löschen |
rm -r verzeichnis | Verzeichnis mit Inhalt löschen |
rm -rf verzeichnis | Ohne Rückfragen löschen |
rm -rI verzeichnis | Mit einmaliger Bestätigung löschen |
find . -type d -empty -delete | Alle 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.