GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Schnellere Möglichkeit, eine große Anzahl von Dateien zu löschen

find … -exec rm {} \; führt den rm aus Befehl für jede Datei. Obwohl das Starten eines neuen Prozesses ziemlich schnell geht, ist es immer noch viel langsamer als das bloße Löschen einer Datei.

find … -exec rm {} + würde rm aufrufen in Stapeln, was viel schneller ist:Sie zahlen die Kosten für die Ausführung von rm einmal pro Stapel, und jeder Stapel führt viele Löschungen durch.

Noch schneller ist es, rm nicht aufzurufen überhaupt. Die find Befehl unter Linux hat eine Aktion -delete um eine übereinstimmende Datei zu löschen.

find ./cache -type f -mtime +0.5 -delete

Wenn Sie jedoch Dateien mit einer solchen Geschwindigkeit produzieren, dass find … -exec rm {} \; nicht mithalten können, ist wahrscheinlich etwas mit Ihrem Setup nicht in Ordnung. Wenn cache Millionen von Dateien enthält, sollten Sie es für einen schnelleren Zugriff in Unterverzeichnisse aufteilen.


Versuchen Sie es mit xargs :

find ./cache -mtime +0.5 -print0 | xargs -0 rm -f

Erklärung für @pradeepchhetri aktualisieren

Wenn Sie find verwenden mit -exec , jede Datei, die find gefunden wird rm aufrufen einmal. Wenn Sie also sehr viele Dateien gefunden haben, z. B. 10000 Dateien, haben Sie rm aufgerufen 10000 Mal.

xargs behandelt die Ausgabe von find als Befehlsargument zu rm , sodass xargs so viele Argumente wie rm bereitstellt sofort verarbeiten kann, also rm -f file1 file2 ... So macht es weniger Fork-Aufrufe, lässt das Programm schneller laufen.


Linux
  1. So suchen Sie in der Konsole nach großen Dateien

  2. Was ist der beste Weg, um die Anzahl der Dateien in einem Verzeichnis zu zählen?

  3. Eine einfache Möglichkeit, doppelte Dateien durch Hardlinks zu ersetzen?

  4. Eine große Anzahl von XML-Dateien neu formatieren?

  5. Löschen Sie übereinstimmende Dateien in allen Unterverzeichnissen

Finden Sie große Dateien in Linux

So finden und löschen Sie doppelte Dateien in Linux

So verschieben Sie eine große Anzahl von Dateien in Linux

So kopieren Sie eine große Anzahl von Dateien unter Linux

So können Sie große (100 GB+) Dateien unter Linux schneller komprimieren

Linux:Anzahl der Dateien in einem Verzeichnis und Unterverzeichnissen finden