So löschen Sie Dateien und Verzeichnisse im Linux-Terminal

Die Befehle rm und rmdir löschen Dateien und Verzeichnisse auf Linux, macOS und anderen Unix-ähnlichen Betriebssystemen. Sie ähneln den Befehlen del und deltree in Windows und DOS. Diese Befehle sind sehr mächtig und haben einige Optionen.

Es ist wichtig zu beachten, dass Dateien und Verzeichnisse, die mit rm und rmdir gelöscht wurden, nicht in den Papierkorb verschoben werden. Sie werden sofort von Ihrem Computer entfernt. Wenn Sie mit diesen Befehlen versehentlich Dateien löschen, können Sie sie nur aus einem Backup wiederherstellen.

So entfernen Sie Dateien mit rm

Der einfachste Fall ist das Löschen einer einzelnen Datei im aktuellen Verzeichnis. Geben Sie den Befehl rm, ein Leerzeichen und dann den Namen der Datei ein, die Sie löschen möchten.

rm file_1.txt

Wenn sich die Datei nicht im aktuellen Arbeitsverzeichnis befindet, geben Sie einen Pfad zum Speicherort der Datei an.

rm ./path/to/the/file/file_1.txt

Sie können mehr als einen Dateinamen an rm übergeben. Dadurch werden alle angegebenen Dateien gelöscht.

rm file_2.txt file_3.txt

Platzhalter können verwendet werden, um Gruppen von zu löschenden Dateien auszuwählen. Das * steht für mehrere Zeichen und das ? steht für ein einzelnes Zeichen. Dieser Befehl würde alle PNG-Bilddateien im aktuellen Arbeitsverzeichnis löschen.

rm *.png

Dieser Befehl würde alle Dateien löschen, die eine einzelne Zeichenerweiterung haben. Dies würde beispielsweise File.1 und File.2 löschen, aber nicht File.12.

rm *.?

Wenn eine Datei schreibgeschützt ist, werden Sie vor dem Löschen der Datei aufgefordert. Sie müssen mit y oder n antworten und „Enter“ drücken.

Um das Risiko der Verwendung von rm mit Platzhaltern zu verringern, verwenden Sie die Option -i (interaktiv). Dazu müssen Sie das Löschen jeder Datei bestätigen.

rm -i *.dat

Die Option -f (force) ist das Gegenteil von interaktiv. Es fordert nicht zur Bestätigung auf, selbst wenn Dateien schreibgeschützt sind.

rm -f filename

So entfernen Sie Verzeichnisse mit rm

Um ein leeres Verzeichnis zu entfernen, verwenden Sie die Option -d (Verzeichnis). Sie können Platzhalter (* und ?) in Verzeichnisnamen genauso verwenden wie bei Dateinamen.

rm -d directory

Wenn Sie mehr als einen Verzeichnisnamen angeben, werden alle angegebenen leeren Verzeichnisse gelöscht.

rm -d directory1 directory2 /path/to/directory3

Um nicht leere Verzeichnisse zu löschen, verwenden Sie die Option -r (rekursiv). Zur Verdeutlichung, dies entfernt die Verzeichnisse und alle darin enthaltenen Dateien und Unterverzeichnisse.

rm -r directory1 directory2 directory3

Wenn ein Verzeichnis oder eine Datei schreibgeschützt ist, werden Sie aufgefordert, das Löschen zu bestätigen. Um nicht leere Verzeichnisse zu löschen und diese Eingabeaufforderungen zu unterdrücken, verwenden Sie die Optionen -r (rekursiv) und -f (force) zusammen.

rm -rf directory

Hier ist Sorgfalt angesagt. Ein Fehler mit dem Befehl rm -rf kann zu Datenverlust oder Systemfehlern führen. Es ist gefährlich, und Vorsicht ist die beste Politik. Um die Verzeichnisstruktur und die Dateien, die mit dem Befehl rm -rf gelöscht werden, zu verstehen, verwenden Sie den Befehl tree.

  So bereinigen Sie Junk-Dateien von einem Linux-PC mit Sweeper

Verwenden Sie apt-get, um dieses Paket auf Ihrem System zu installieren, wenn Sie Ubuntu oder eine andere Debian-basierte Distribution verwenden. Verwenden Sie bei anderen Linux-Distributionen stattdessen das Paketverwaltungstool Ihrer Linux-Distribution.

sudo apt-get install tree

Das Ausführen des Befehls tree erzeugt ein leicht verständliches Diagramm der Verzeichnisstruktur und der Dateien unterhalb des Verzeichnisses, von dem aus es ausgeführt wird.

tree

Sie können auch einen Pfad zum Befehl tree angeben, damit dieser den Baum aus einem anderen Verzeichnis im Dateisystem startet.

tree path/to/directory

Der Befehl rm hat auch die Optionen –one-file-system, –no-preserve-root, –preserve-root, aber diese werden nur für fortgeschrittene Benutzer empfohlen. Wenn Sie etwas falsch machen, können Sie versehentlich alle Ihre Systemdateien löschen. Konsultieren Sie die Befehlszeilen Handbuchseite für mehr Informationen.

  So installieren Sie Grub unter Arch Linux neu

So entfernen Sie Verzeichnisse mit rmdir

Es gibt einen weiteren Befehl namens rmdir, mit dem Sie Verzeichnisse löschen können. Der Unterschied zwischen rm und rmdir besteht darin, dass rmdir nur leere Verzeichnisse löschen kann. Es wird niemals Dateien löschen.

Der einfachste Fall ist das Löschen eines einzelnen leeren Verzeichnisses. Wie bei rm können Sie rmdir mehrere Verzeichnisnamen oder einen Pfad zu einem Verzeichnis übergeben.

Löschen Sie ein einzelnes Verzeichnis im aktuellen Verzeichnis, indem Sie seinen Namen an rmdir übergeben:

rmdir directory

Löschen Sie mehrere Verzeichnisse, indem Sie eine Liste von Namen an rmdir übergeben:

rmdir directory1 directory2 directory3

Löschen Sie ein Verzeichnis, das sich nicht im aktuellen Verzeichnis befindet, indem Sie den vollständigen Pfad zu diesem Verzeichnis angeben:

rmdir /path/to/directory

Wenn Sie versuchen, einen nicht leeren Ordner zu löschen, gibt rmdir eine Fehlermeldung aus. Im folgenden Beispiel löscht rmdir erfolgreich und im Hintergrund das Client-Verzeichnis, weigert sich jedoch, das Projektverzeichnis zu löschen, da es Dateien enthält. Das Projektverzeichnis wird unverändert belassen und die darin enthaltenen Dateien bleiben unberührt.

Wenn rmdir den Fehler „Verzeichnis nicht leer“ ausgibt, stoppt es die Verarbeitung der Verzeichnisse, die ihm auf der Befehlszeile übergeben wurden. Wenn Sie es aufgefordert haben, vier Verzeichnisse zu löschen und das erste Verzeichnis Dateien enthält, würde rmdir Ihnen die Fehlermeldung ausgeben und nichts weiter tun. Sie können es erzwingen, diese Fehler mit der Option –ignore-fail-on-non-empty zu ignorieren, damit andere Verzeichnisse verarbeitet werden.

Im folgenden Beispiel wurden zwei Ordner an rmdir übergeben, dies sind work/reports und work/quotes . Die Option –ignore-fail-on-non-empty wurde in den Befehl aufgenommen. Der Ordner work/reports enthält Dateien, sodass rmdir ihn nicht löschen kann. Die Option –ignore-fail-on-non-empty zwingt rmdir, den Fehler zu ignorieren und zum nächsten Ordner zu wechseln, der verarbeitet werden muss, nämlich work/quotes. Dies ist ein leerer Ordner und rmdir löscht ihn.

  7 großartige Linux-App-Alternativen für Windows-Apps

Dies war der verwendete Befehl.

rmdir --ignore-fail-on-non-empty work/reports /work/quotes

Sie können die Option -p (parents) verwenden, um ein Verzeichnis und auch seine übergeordneten Verzeichnisse zu löschen. Dieser Trick funktioniert, weil rmdir mit dem Zielverzeichnis beginnt und dann zum übergeordneten Verzeichnis zurückgeht. Dieses Verzeichnis sollte jetzt leer sein, damit es von rmdir gelöscht werden kann, und der Vorgang wiederholt sich, indem er den Pfad, der für rmdir bereitgestellt wurde, schrittweise zurücksetzt.

Im folgenden Beispiel lautet der Befehl, der an rmdir übergeben wird:

rmdir -p work/invoices

Sowohl die Rechnungen als auch die Arbeitsverzeichnisse werden wie gewünscht gelöscht.

Unabhängig davon, ob Sie Bash oder eine andere Shell verwenden, bietet Linux flexible und leistungsstarke Befehle, mit denen Sie Verzeichnisse und Dateien direkt von der Terminal-Befehlszeile löschen können. Manche Leute bevorzugen einen Workflow, der sich um das Terminal dreht. Andere haben möglicherweise keine Wahl in dieser Angelegenheit. Sie können auf Servern ohne installierte GUI oder in einer Remote-Sitzung auf einem Headless-System wie einem Raspberry Pi arbeiten. Diese Befehle sind perfekt für diese Personengruppe.

Aber welche Art von Workflow Sie auch bevorzugen, diese Befehle eignen sich sehr gut, um in Shell-Skripte aufgenommen zu werden. Wenn ein Skript durch einen Cron-Job ausgelöst wird, kann es dazu beitragen, routinemäßige Housekeeping-Aufgaben wie das Löschen unerwünschter Protokolldateien zu automatisieren. Wenn Sie diesen Anwendungsfall untersuchen, denken Sie an die Leistungsfähigkeit dieser Befehle, testen Sie alles sorgfältig und führen Sie immer ein aktuelles Backup.