Es gibt verschiedene Möglichkeiten, Verzeichnisse in Linux-Systemen zu entfernen. Wenn Sie einen Desktop-Dateimanager wie Gnome’s Files oder KDE’s Dolphin verwenden, können Sie Dateien und Verzeichnisse über die grafische Benutzeroberfläche des Managers löschen. Wenn Sie jedoch auf einem Headless-Server arbeiten oder mehrere Verzeichnisse auf einmal entfernen möchten, löschen Sie die Verzeichnisse (Ordner) am besten über die Befehlszeile.
In diesem Artikel erklären wir, wie man unter Linux Verzeichnisse mit dem rmdir
löscht , rm
, und find
Befehle.
Bevor Sie beginnen #
Beim Entfernen eines Verzeichnisses mit einem Desktop-Dateimanager wird das Verzeichnis tatsächlich in den Papierkorb verschoben und kann einfach wiederhergestellt werden.
Seien Sie besonders vorsichtig, wenn Sie Dateien oder Verzeichnisse von der Befehlszeile entfernen, denn sobald das Verzeichnis mit den in diesem Artikel erläuterten Befehlen gelöscht wurde, kann es nicht vollständig wiederhergestellt werden.
Auf den meisten Linux-Dateisystemen erfordert das Löschen eines Verzeichnisses eine Schreibberechtigung für das Verzeichnis und seinen Inhalt. Andernfalls erhalten Sie die Fehlermeldung „Vorgang nicht zulässig“.
Verzeichnisnamen mit einem Leerzeichen müssen mit einem Backslash maskiert werden (/
).
Entfernen von Verzeichnissen mit rmdir
#
rmdir
ist ein Befehlszeilendienstprogramm zum Löschen leerer Verzeichnisse. Dies ist nützlich, wenn Sie ein Verzeichnis nur löschen möchten, wenn es leer ist, ohne prüfen zu müssen, ob das Verzeichnis leer ist oder nicht.
Um ein Verzeichnis zu löschen mit rmdir
, geben Sie den Befehl gefolgt vom Namen des Verzeichnisses ein, das Sie entfernen möchten. Zum Beispiel, um ein Verzeichnis mit dem Namen dir1
zu löschen Sie würden Folgendes eingeben:
rmdir dir1
Wenn das Verzeichnis nicht leer ist, erhalten Sie die folgende Fehlermeldung:
rmdir: failed to remove 'dir1': No such file or directory
In diesem Fall müssen Sie den rm
verwenden Befehl oder entfernen Sie den Inhalt des Verzeichnisses manuell, bevor Sie ihn löschen können.
Entfernen von Verzeichnissen mit rm
#
rm
ist ein Befehlszeilenprogramm zum Löschen von Dateien und Verzeichnissen. Im Gegensatz zu rmdir
der rm
Der Befehl kann sowohl leere als auch nicht leere Verzeichnisse löschen.
Standardmäßig bei Verwendung ohne Option rm
entfernt keine Verzeichnisse. Um ein leeres Verzeichnis zu löschen, verwenden Sie -d
(--dir
)-Option und um ein nicht leeres Verzeichnis und seinen gesamten Inhalt zu löschen, verwenden Sie den -r
(--recursive
oder -R
)-Option.
Zum Beispiel, um ein Verzeichnis mit dem Namen dir1
zu löschen zusammen mit seinem gesamten Inhalt würden Sie Folgendes eingeben:
rm -r dir1
Wenn ein Verzeichnis oder eine Datei innerhalb des Verzeichnisses schreibgeschützt ist, werden Sie aufgefordert, das Löschen zu bestätigen. Um ein Verzeichnis ohne Aufforderung zu entfernen, verwenden Sie -f
Möglichkeit:
rm -rf dir1
Um mehrere Verzeichnisse gleichzeitig zu entfernen, rufen Sie rm
auf Befehl, gefolgt von den Namen der Verzeichnisse, getrennt durch Leerzeichen. Der folgende Befehl entfernt jedes aufgelistete Verzeichnis und seinen Inhalt:
rm -r dir1 dir2 dir3
Das -i
Option teilt rm
mit um Sie aufzufordern, das Löschen jedes Unterverzeichnisses und jeder Datei zu bestätigen. Wenn das Verzeichnis viele Dateien enthält, kann dies etwas lästig sein, daher sollten Sie die Verwendung des -I
in Betracht ziehen Option, die Sie nur einmal auffordert, bevor Sie mit dem Löschen fortfahren.
rm -rI dir1
Um das Verzeichnis zu entfernen, geben Sie y
ein und drücken Sie Enter
.
rm: remove 1 argument recursively? y
Sie können auch reguläre Erweiterungen verwenden, um mehrere Verzeichnisse abzugleichen und zu löschen. Zum Beispiel, um alle Verzeichnisse der ersten Ebene im aktuellen Verzeichnis zu entfernen, die mit _bak
enden , würden Sie den folgenden Befehl verwenden:
rm -r *_bak
Die Verwendung regulärer Erweiterungen beim Entfernen von Verzeichnissen kann riskant sein. Es empfiehlt sich, zuerst die Verzeichnisse mit dem ls
aufzulisten Befehl, damit Sie sehen können, welche Verzeichnisse gelöscht werden, bevor Sie rm
ausführen Befehl.
Entfernen von Verzeichnissen mit find
#
find
ist ein Befehlszeilenprogramm, mit dem Sie anhand eines bestimmten Ausdrucks nach Dateien und Verzeichnissen suchen und eine Aktion für jede übereinstimmende Datei oder jedes Verzeichnis ausführen können.
Das häufigste Szenario ist die Verwendung von find
Befehl zum Löschen von Verzeichnissen nach einem Muster. Zum Beispiel, um alle Verzeichnisse zu löschen, die auf _cache
enden im aktuellen Arbeitsverzeichnis würden Sie Folgendes ausführen:
find . -type d -name '*_cache' -exec rm -r {} +
Analysieren wir den obigen Befehl:
/dir
- im aktuellen Arbeitsverzeichnis rekursiv suchen (.
).-type d
- beschränkt die Suche auf Verzeichnisse.-name '*_cache'
- Nur Verzeichnisse durchsuchen, die auf_cache
enden-exec
- führt einen externen Befehl mit optionalen Argumenten aus, in diesem Fall alsorm -r
.{} +
- fügt die gefundenen Dateien an das Ende desrm
an Befehl.
Entferne alle leeren Verzeichnisse #
Um alle leeren Verzeichnisse in einem Verzeichnisbaum zu entfernen, würden Sie Folgendes ausführen:
find /dir -type d -empty -delete
Hier ist eine Erklärung für die verwendeten Optionen:
/dir
- rekursiv im/dir
suchen Verzeichnis.-type d
- beschränkt die Suche auf Verzeichnisse.-empty
- Beschränkt die Suche nur auf leere Verzeichnisse.-delete
- löscht alle gefundenen leeren Verzeichnisse im Teilbaum.-delete
kann nur leere Verzeichnisse löschen.
Verwenden Sie das -delete
Option mit äußerster Vorsicht. Die Suchbefehlszeile wird als Ausdruck ausgewertet, und wenn Sie den -delete
hinzufügen Option zuerst, löscht der Befehl alles unterhalb der angegebenen Startpunkte.
Testen Sie den Befehl immer zuerst ohne -delete
Option und verwenden Sie -delete
als letzte Option.
/bin/rm:Argumentliste zu lang #
Diese Fehlermeldung erscheint, wenn Sie den rm
verwenden Befehl zum Entfernen eines Verzeichnisses, das eine große Anzahl von Dateien enthält. Dies geschieht, weil die Anzahl der Dateien die Systemgrenze für die Größe des Befehlszeilenarguments überschreitet.
Es gibt verschiedene Lösungen für dieses Problem. Zum Beispiel können Sie cd
in das Verzeichnis und manuell oder mit einer Schleife, um Unterverzeichnisse einzeln zu entfernen.
Die einfachste Lösung ist, zuerst alle Dateien innerhalb des Verzeichnisses mit find
zu löschen Befehl und löschen Sie dann das Verzeichnis:
find /dir -type f -delete && rm -r /dir
Schlussfolgerung #
Mit rm
und find
Sie können Verzeichnisse anhand verschiedener Kriterien schnell und effizient löschen.
Das Löschen von Verzeichnissen ist ein einfacher und einfacher Vorgang, aber Sie müssen vorsichtig sein, keine wichtigen Daten zu löschen.
Wenn Sie Fragen oder Feedback haben, können Sie gerne einen Kommentar hinterlassen.