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.