Website-Suche

So löschen Sie ein großes Verzeichnis mit Dateien unter Linux


Die Dateiverwaltung ist eine der häufigsten Aufgaben, die ein Benutzer auf einem Linux-System ausführt, einschließlich des Erstellens, Kopierens, Verschiebens, Änderns und Löschens von Dateien und Verzeichnissen.

Dieser Artikel enthält einige Befehlszeilentipps, wie Sie ein großes Verzeichnis löschen können, das Tausende von Dateien in einem Linux-System enthält.

Dateien unter Linux löschen

Die gebräuchlichste Methode zum Löschen von Dateien auf einem Linux-System ist die Verwendung des Befehls rm, der das folgende Syntaxformat annimmt:

$ rm [ options ] sample_file.txt

Um beispielsweise eine Textdatei mit dem Namen file1.txt zu löschen, führen Sie den folgenden Befehl aus:

$ rm file1.txt

Um das Entfernen einer Datei zu erzwingen, ohne um Erlaubnis gebeten zu werden, übergeben Sie das Flag -f wie folgt.

$ rm -f file1.txt

Verzeichnis unter Linux löschen

Führen Sie den folgenden Befehl aus, um ein Verzeichnis mit dem Namen sample_directory zu entfernen oder zu löschen:

$ rm -rf sample_directory

Die Option -r löscht rekursiv das Verzeichnis zusammen mit allen darin enthaltenen Unterverzeichnissen und Dateien.

Um ein leeres Verzeichnis zu löschen oder zu entfernen, verwenden Sie den Befehl rmdir, der sich als nützlich erweist, wenn Sie ein leeres Verzeichnis mit dem Namen test_directory entfernen möchten, wie gezeigt:

$ rmdir test_directory

Löschen Sie ein großes Verzeichnis mit Tonnen von Dateien

Wenn der Befehl rm ausgeführt wird, entfernt das Dateisystem nur den Link zur Datei, wodurch die Datei für den Benutzer nicht verfügbar ist, aber im eigentlichen Sinne bleiben die Daten der Datei selbst auf der Festplatte intakt.

Daher wird bei der Ausgabe des Befehls rm nur der Verweis auf die Dateien entfernt, wodurch die Speicherblöcke im Dateisystem freigegeben werden.

Daher gibt es mehrere Möglichkeiten, Dateien unter Linux zu löschen.

Löschen Sie Dateien mit Inode-Nummer unter Linux

Sie können z. B. eine Datei anhand ihrer Inode-Nummer löschen. Sie können die Inode-Nummer einer Datei mit dem Befehl stat ermitteln, wie gezeigt.

$ stat file1.txt

File: file.txt
  Size: 4076      	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 1573697     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/ tecmint)   Gid: ( 1000/ tecmint)
Access: 2023-05-08 12:10:55.656070248 +0530
Modify: 2023-05-08 12:10:55.656070248 +0530
Change: 2023-05-08 12:10:55.656070248 +0530

Darüber hinaus können Sie das Flag -i im Befehl ls übergeben, wenn Sie Dateien in einem Verzeichnis auflisten.

$ ls -li

1573697 .rw-rw-r-- tecmint tecmint 4.0 KB Mon May  8 12:10:55 2023  file1.txt

Um die Datei mit ihrem Inode zu entfernen, verwenden Sie den Befehl find, wie in der folgenden Syntax gezeigt.

$ find /path/to/file -inum INODE_NUM -exec rm -i {} +

In unserem Beispiel lautet der Befehl zum Entfernen von Datei-file1.txt, die sich im aktuellen Verzeichnis befindet:

$ find /path/to/file -inum 1573697 -exec rm -i {} +

Drücken Sie 'y', um das Entfernen zu bestätigen, und drücken Sie ENTER.

Sehen wir uns nun an, wie man große Verzeichnisse mit Tausenden von Dateien löscht.

Erstellen Sie ein Verzeichnis mit Tausenden von Dateien

Der gute alte rm-Befehl ist der schnellste Weg, um ein großes Verzeichnis mit Tausenden von Dateien zu löschen. Um dies zu demonstrieren, erstellen wir zunächst ein Beispielverzeichnis und navigieren in dieses Verzeichnis.

$ mkdir test_dir 
cd test_dir

Als nächstes erstellen wir eine wahnsinnig große Anzahl von Dateien, in diesem Fall 500.000 Textdateien, indem wir die folgende Bash-for-A-Schleife verwenden.

$ time for item in {1..500000}; do touch file_name$item.txt; done

HINWEIS: Der obige Befehl ist ressourcenintensiv und verbraucht daher erheblich CPU und RAM. Es dauert auch einige Zeit, abhängig von Ihren Systemspezifikationen. In meinem Fall führe ich eine VM mit 4 GB RAM und 3 CPUs aus.

Der schnellste Weg, das Verzeichnis unter Linux zu löschen

Der schnellste Weg, ein großes Verzeichnis zu löschen, ist die Verwendung des guten alten rm-Verzeichnisses, wie unten gezeigt. Hier zeigt die Option time die Zeit an, die für die erfolgreiche Ausführung des Befehls benötigt wurde.

$ time rm -rf /test_dir

Aus der Ausgabe können Sie ersehen, dass es ungefähr 6 Sekunden gedauert hat, das gesamte Verzeichnis zu löschen.

Löschen eines großen Verzeichnisses mit dem Befehl "Suchen"

Eine andere Möglichkeit, große Verzeichnisse zu löschen, ist die Verwendung des Befehls find, wie in der folgenden Syntax gezeigt.

$ time find /path/to/directory -delete

Obwohl nicht so schnell wie der rm-Befehl, erledigt er immer noch die Arbeit.

$ time find test_dir -delete

Großes Verzeichnis mit dem Perl-Befehl löschen

Ein anderer Ansatz besteht darin, die Skriptsprache Perl innerhalb des Verzeichnisses zu verwenden, um Tonnen von Dateien zu entfernen.

$ cd test_dir
time perl -e 'for(<*>){((stat)[9]<(unlink))}'

Aus der Ausgabe können Sie entnehmen, dass es viel länger gedauert hat, alle Dateien im Verzeichnis zu löschen, als bei den vorherigen Befehlen, die wir uns zuvor angesehen haben.

Schlussfolgerung

Da haben Sie es. In dieser Anleitung haben wir uns angesehen, wie Sie große Verzeichnisse löschen können, die Tausende von Dateien auf einem Linux-System enthalten.

Verwandte Artikel: