3 Stimmen

"rm" (löschen) 8 Millionen Dateien in einem Verzeichnis?

Ich habe 8 Millionen Dateien in meinem /tmp und muss sie entfernen. Dieser Server ist auch ziemlich wichtig app läuft und ich kann nicht überlasten es.

$ ls | grep .| xargs rm 

Dies führt dazu, dass meine Anwendung nicht mehr reagiert.

Haben Sie eine Idee, wie man diese Dateien entfernen kann? Vielen Dank im Voraus!

2voto

jørgensen Punkte 9773

Nun ja, verwenden Sie nicht ls (weil es Dateien sortieren kann und die Dateiliste mehr Speicher verbraucht, als Sie möchten), fügen Sie keine sinnlosen Umleitungen wie eine Pipe oder xargs hinzu.

find . -type f -delete

1voto

Edwin Buck Punkte 67237

grep . passt zu allem, auch zu nichts.

Schneiden Sie sie aus Ihrer Kette heraus, um einen für jede Datei gestarteten Prozess zu entfernen. Das sollte die Dinge deutlich beschleunigen.

ls | xargs rm -rf

Beachten Sie, dass dabei Leerzeichen unterdrückt werden, so dass eine Verbesserung darin besteht

ls | xargs -I{} rm -v {}

Natürlich, ein viel Die schnellere Methode ist, das Verzeichnis zu entfernen und neu zu erstellen. Allerdings müssen Sie darauf achten, dass sich Ihr Skript nicht im Verzeichnisbaum "verirrt" und Dinge entfernt, die es nicht sollte.

rm -rf dir
mkdir dir

Beachten Sie, dass es einige feine Unterschiede zwischen dem Entfernen aller Dateien und dem Entfernen und Neuanlegen des Verzeichnisses gibt. Das Entfernen aller Dateien bewirkt sólo entfernt sichtbare Dateien und Verzeichnisse; beim Entfernen des Verzeichnisses und Neuanlegen werden alle Dateien und Verzeichnisse entfernt, sichtbar und verborgen .

-1voto

mitch.tux Punkte 16

Versuchen Sie dies:

ls -1 | grep -v -e "ignoreFile" -e "ignoreFile2" | xargs rm -rf

ls -1 ist eine Vereinfachung ls | grep .

grep -v entfernt Zeilen aus der Liste. Geben Sie einfach alle Dateien an, die nicht gelöscht werden sollen, und trennen Sie die Muster mit dem Flag -e

Und nur zur vollständigen Erläuterung: (Ich gehe davon aus, dass dies bereits bekannt ist) rm -rf :

-r recursive
-f force

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X