Die Kommandozeilenbefehle rm
und rmdir
sind grundlegende Werkzeuge zum Entfernen von Dateien und Verzeichnissen in Linux, macOS und ähnlichen Betriebssystemen. Sie stellen Pendants zu den Befehlen del
und deltree
in Windows und DOS dar. Diese Befehle sind sehr leistungsfähig und bieten zahlreiche Optionen für die differenzierte Steuerung des Löschvorgangs.
Es ist von entscheidender Bedeutung, zu beachten, dass gelöschte Dateien und Verzeichnisse nicht in einen Papierkorb verschoben werden. Stattdessen werden sie unwiderruflich vom Speichermedium entfernt. Eine versehentliche Löschung mit rm
oder rmdir
erfordert daher eine Wiederherstellung aus einem Backup, da die Dateien nicht auf einfache Weise zurückgeholt werden können.
Dateien mit dem Befehl rm
entfernen
Der einfachste Anwendungsfall ist das Löschen einer einzelnen Datei im aktuellen Arbeitsverzeichnis. Hierfür geben Sie rm
, gefolgt von einem Leerzeichen und dem Dateinamen ein:
rm datei_1.txt
Befindet sich die zu löschende Datei in einem anderen Verzeichnis, ist der vollständige oder relative Pfad anzugeben:
rm ./pfad/zur/datei/datei_1.txt
Sie können mehrere Dateinamen gleichzeitig an rm
übergeben, um eine Vielzahl von Dateien mit einem einzigen Befehl zu entfernen:
rm datei_2.txt datei_3.txt
Platzhalter wie *
(für mehrere Zeichen) und ?
(für ein einzelnes Zeichen) können genutzt werden, um Dateigruppen auszuwählen. Der folgende Befehl löscht beispielsweise alle PNG-Bilddateien im aktuellen Verzeichnis:
rm *.png
Dieser Befehl entfernt alle Dateien mit einer einzelnen Zeichenerweiterung (z.B. Datei.1
und Datei.2
, aber nicht Datei.12
):
rm *.?
Schreibgeschützte Dateien führen zu einer Sicherheitsabfrage, die mit y
(Ja) oder n
(Nein) und der Eingabetaste bestätigt werden muss.
Um das Risiko von unbeabsichtigten Löschungen durch Platzhalter zu reduzieren, empfiehlt sich die Option -i
(interaktiv). Diese erzwingt eine individuelle Bestätigung für jede zu löschende Datei:
rm -i *.dat
Die Option -f
(force) unterdrückt diese Abfrage und löscht Dateien ohne Rückfrage, auch schreibgeschützte:
rm -f dateiname
Verzeichnisse mit rm
entfernen
Um leere Verzeichnisse zu löschen, verwenden Sie die Option -d
(directory). Platzhalter können auch hier wie bei Dateinamen verwendet werden:
rm -d verzeichnis
Mehrere leere Verzeichnisse können mit einem einzigen Befehl gelöscht werden:
rm -d verzeichnis1 verzeichnis2 /pfad/zu/verzeichnis3
Nicht-leere Verzeichnisse werden mit der Option -r
(rekursiv) entfernt. Dabei werden das Verzeichnis selbst sowie alle darin enthaltenen Dateien und Unterverzeichnisse gelöscht:
rm -r verzeichnis1 verzeichnis2 verzeichnis3
Auch hier kann die Bestätigungsabfrage unterdrückt werden, indem die Optionen -r
und -f
kombiniert werden:
rm -rf verzeichnis
Bei der Nutzung von rm -rf
ist größte Vorsicht geboten, da ein falscher Befehl zu Datenverlust oder sogar Systemfehlern führen kann. Um die Verzeichnisstruktur besser zu überblicken, kann der Befehl tree
verwendet werden. Dieser kann über den Paketmanager installiert werden (z.B. mit sudo apt-get install tree
unter Debian/Ubuntu). Das resultierende Diagramm verdeutlicht die Hierarchie und kann bei der Entscheidungsfindung helfen.
tree
Ebenso kann der tree
Befehl mit dem Pfad zu einem bestimmten Verzeichnis gestartet werden:
tree pfad/zum/verzeichnis
Zusätzliche Optionen wie --one-file-system
, --no-preserve-root
und --preserve-root
sind nur für erfahrene Benutzer gedacht und sollten mit Vorsicht behandelt werden, da sie bei unsachgemäßer Anwendung zum Verlust von Systemdateien führen können. Für detailliertere Informationen konsultieren Sie bitte die Manpage zu rm
.
Verzeichnisse mit rmdir
entfernen
Der Befehl rmdir
dient ebenfalls dem Entfernen von Verzeichnissen, allerdings nur leeren. Er löscht grundsätzlich keine Dateien.
Die einfachste Anwendung ist das Löschen eines einzelnen, leeren Verzeichnisses. Auch hier können mehrere Verzeichnisse oder ein Pfad angegeben werden:
rmdir verzeichnis
Mehrere leere Verzeichnisse löschen:
rmdir verzeichnis1 verzeichnis2 verzeichnis3
Löschen eines Verzeichnisses mit absolutem Pfad:
rmdir /pfad/zum/verzeichnis
Enthält ein Verzeichnis Dateien, gibt rmdir
eine Fehlermeldung aus. Im folgenden Beispiel wird das Verzeichnis client
erfolgreich gelöscht, während projekt
aufgrund vorhandener Dateien unangetastet bleibt:
Bei dem Fehler „Verzeichnis nicht leer“ stoppt rmdir
die Verarbeitung weiterer Verzeichnisse. Die Option --ignore-fail-on-non-empty
kann verwendet werden, um Fehler zu ignorieren und die Verarbeitung weiterer Verzeichnisse fortzusetzen. Im folgenden Beispiel wird work/reports
aufgrund von Dateien nicht gelöscht. Die Option --ignore-fail-on-non-empty
sorgt aber dafür, dass das leere Verzeichnis work/quotes
trotzdem gelöscht wird.
rmdir --ignore-fail-on-non-empty work/reports /work/quotes
Die Option -p
(parents) ermöglicht das rekursive Löschen eines Verzeichnisses und seiner übergeordneten Verzeichnisse, solange diese leer sind. Zuerst wird das Zielverzeichnis gelöscht, dann die übergeordneten Verzeichnisse, wobei der Pfad schrittweise zurückverfolgt wird. So können verschachtelte leere Verzeichnisse auf einen Schlag gelöscht werden.
Beispiel:
rmdir -p work/invoices
Sowohl das Verzeichnis invoices
als auch sein übergeordnetes Verzeichnis work
werden entfernt.
Unabhängig von der verwendeten Shell bieten Linux-Systeme mit diesen Befehlen eine flexible und leistungsfähige Möglichkeit zur direkten Dateiverwaltung über die Kommandozeile. Diese Befehle sind besonders nützlich für Benutzer, die eine Terminal-orientierte Arbeitsweise bevorzugen oder keine grafische Oberfläche zur Verfügung haben (z.B. bei Servern oder Remote-Systemen wie dem Raspberry Pi). Zudem sind diese Befehle ideal für die Integration in Shell-Skripte, die beispielsweise in automatisierten Aufgaben (Cronjobs) zur Verwaltung von Logdateien genutzt werden können. Dabei gilt es immer die Möglichkeiten und Gefahren der Befehle zu kennen und mit aktuellen Backups zu arbeiten.