Linux / Befehl rmdir: Leere Verzeichnisse entfernen
rmdir entfernt ausschließlich leere Verzeichnisse und verweigert das Löschen, sobald noch Inhalte vorhanden sind. Mit -p können auch leere übergeordnete Verzeichnisse entfernt werden. Im Gegensatz dazu löscht rm mit -r auch Inhalte; prüfen Sie Ziel und Grenze vorher.
Die Beispiele verwenden das Verhalten von GNU Coreutils. Prüfen Sie rmdir --help, man rmdir und die Dokumentation Ihrer Distribution, wenn Portabilität oder eine versionsspezifische Option wichtig ist.
Ergänzende Befehle und Anwendungsfälle finden Sie in Wesentliche Linux-Befehle: Eine praktische Referenz nach Aufgaben.
Was ist der Befehl rmdir?
rmdir entfernt nur leere Verzeichnisse. Es weigert sich, ein Verzeichnis zu entfernen, das noch Dateien, versteckte Einträge oder Unterverzeichnisse enthält, was es zu einem nützlichen Schutz macht, wenn eine rekursive Löschung nicht beabsichtigt ist.
Grundlegende Syntax
rmdir [OPTION]... DIRECTORY...
Setzen Sie Anführungszeichen um Pfade, die Leerzeichen enthalten. Wenn unterstützt, setzen Sie -- vor Operanden, die mit einem Bindestrich beginnen, damit sie nicht als Optionen interpretiert werden.
Grundlegende rmdir-Verwendung
Ein leeres Verzeichnis entfernen
Das Verzeichnis wird nur entfernt, wenn es keine Einträge enthält.
rmdir old-cache
Mehrere leere Verzeichnisse entfernen
Jeder Operand wird der Reihe nach verarbeitet. Einige können erfolgreich sein, während andere fehlschlagen, also überprüfen Sie die Nachrichten und den Exit-Status.
rmdir empty-a empty-b empty-c
Leere übergeordnete Verzeichnisse entfernen
Mit -p entfernt rmdir das benannte Verzeichnis und versucht dann, seine leeren übergeordneten Verzeichnisse von unten nach oben zu entfernen.
rmdir -p a/b/c
Überprüfung des Ergebnisses beim Entfernen eines leeren Verzeichnisses
rmdir gibt keine Meldung aus, wenn ein leeres Verzeichnis entfernt wird. Wenden Sie das folgende Beispiel nur auf temporär erstellte Ziele an.
mkdir empty-demo rmdir empty-demo test ! -e empty-demo echo $?
Die Beispielausgabe ist 0. Dies bedeutet, dass die Bedingung, dass der Pfad in test nicht existiert, wahr war. Wenn sich sogar versteckte Dateien im Verzeichnis befinden, schlägt rmdir fehl, überprüfen Sie also zuerst den Inhalt.
Wichtige Optionen
| Option | Zweck |
|---|---|
-p, --parents |
Entfernen Sie das Verzeichnis und leere übergeordnete Komponenten. |
-v |
Melden Sie jedes zu verarbeitende Verzeichnis. |
--ignore-fail-on-non-empty |
Unterdrücken Sie Fehlermeldungen, die nur durch ein nicht leeres Verzeichnis verursacht werden. |
Lange Optionen machen überprüfte Skripte oft leichter verständlich. Wenn ein Skript auf Nicht-GNU-Systemen laufen muss, überprüfen Sie jede nicht-POSIX-Option auf der Zielplattform.
Praktische Beispiele
Prüfen Sie, ob das Verzeichnis wirklich leer ist
Ein normales ls kann Punktdateien verbergen. Verwenden Sie ls -la oder find, wenn die Entfernung unerwartet fehlschlägt.
ls -la old-cache find old-cache -mindepth 1 -maxdepth 1 -print
Nur aufräumen, wenn leer
Ein Skript kann rmdir versuchen und das Verzeichnis behalten, wenn Daten vorhanden sind. Behandeln Sie andere Fehler separat, wenn sie relevant sind.
if rmdir -- cache-dir 2>/dev/null; then printf '%s\n' 'Removed the empty cache directory.' fi
Übergeordnetes Aufräumen melden
Kombinieren Sie -p und -v, um zu sehen, wie weit das Aufräumen vorangeschritten ist. Vermeiden Sie -p, wenn eine spezifische übergeordnete Grenze bestehen bleiben muss.
rmdir -pv build/tmp/session
rmdir und verwandte Befehle
| Befehl oder Methode | Hauptrolle | Geeignet für |
|---|---|---|
rmdir |
Nur leere Verzeichnisse entfernen | Alle Pfade beibehalten, die noch Daten enthalten |
rm -d |
Leere Verzeichnisse mit GNU rm entfernen | Gemischte Dateioperationen |
rm -r |
Ein Verzeichnisbaum rekursiv löschen | Bewusstes Entfernen aller Inhalte |
find -empty -delete |
Finde und entferne übereinstimmende leere Einträge | Regelbasierte Bereinigung über viele Pfade |
Wichtige Hinweise
Versteckte Dateien zählen als Inhalte
Dateien wie .keep und .gitignore machen ein Verzeichnis nicht leer.
-p kann höher als erwartet reichen
Wenn jeder übergeordnete Ordner leer ist, können mehrere Ebenen entfernt werden. Wählen Sie die Bereinigungsgrenze, bevor Sie den Befehl ausführen.
Fehler können nützliche Informationen sein
Ein Fehler wegen eines nicht leeren Verzeichnisses bedeutet oft, dass Daten verbleiben. Unterdrücken Sie nicht jeden Fehler, ohne zu prüfen, warum er aufgetreten ist.
FAQ
Kann rmdir ein Verzeichnis entfernen, das Dateien enthält?
Nein. Verwenden Sie rm -r nur nach sorgfältiger Prüfung, wenn alle Inhalte gelöscht werden sollen.
Warum kann ein scheinbar leeres Verzeichnis nicht entfernt werden?
Es kann versteckte Einträge enthalten, ein Einhängepunkt sein oder ein Berechtigungsproblem haben.
Wie entferne ich auch leere übergeordnete Verzeichnisse?
Verwenden Sie rmdir -p PATH. Jede Ebene muss leer sein.
Ist rmdir sicherer als rm -r?
Es ist restriktiver, da es nicht-leere Verzeichnisse ablehnt, aber der Zielpfad muss trotzdem überprüft werden.
Weitere Angaben zu Syntax, Implementierung und Verfügbarkeit finden Sie unter GNU Coreutils rmdir-Dokumentation und GNU Coreutils-Handbuch.




