Das Thema Löschen von Dateien wird im Abschnitt "Aufräumen" in der Dokumentation zu GNU findutils behandelt. Sie können dies auf Ihrem System mit "info find" oder in Emacs lesen. Sie können es auch online unter http://www.gnu.org/software/findutils/manual/html_node/find_html/Cleaning-Up.html#Cleaning-Up anzeigen .
find .... -delete
Dies ist die sicherste (gegen symbolische Link-Rennen) und leistungsstärkste (da bei vollem Pipe-Puffer nichts ausgeführt oder ein Kontextwechsel durchgeführt werden muss) Option. Aber denken Sie daran, dass -delete -tiefe impliziert.
find .... | xargs rm ...
Dies ist in Situationen gefährlich, in denen andere Schreibzugriff auf den Baum haben, in dem Sie bereinigen. Angenommen, der Befehl find hat entschieden, dass /var/tmp/scratch/me/.ssh/config den Anforderungen entspricht, und druckt daher diese Namen zu stdout. Der Befehl xargs liest das und fügt es einer Datenstruktur hinzu. Kurze Zeit später (wenn xargs die durch den Standardwert der Option -s angegebene Anzahl von Bytes gelesen hat) wird xargs gegabelt und ausgeführt, um sie zu löschen. Es ist jedoch möglich, dass in der Zwischenzeit jemand anderes dies getan hat:
$ cd /var/tmp/scratch
$ mv me me.old
$ ln -s /root me
Wenn rm dann /var/tmp/scratch/me/.ssh/config löscht, wird der Systemaufruf unlink ("/ var / tmp / kratzer / me / .ssh / config") ausgegeben. Da der Kernel die symbolische Verknüpfung für Sie auflöst, entspricht dies dem Aufruf von unlink ("/ root / .ssh / config"). Wenn der xargs-Prozess als root ausgeführt wurde, wird /root/.ssh/config gelöscht, obwohl Sie in der Befehlszeile -L nicht angegeben haben. Wenn Sicherheit wichtig ist, verwenden Sie aus diesem Grund -delete. Weitere Informationen zu diesem Bereich finden Sie im Abschnitt "Sicherheitsaspekte" des GNU-Suchhandbuchs.
find .... -exec rm ...;
Da dies auch Fork / Exec betrifft, gibt es dieselben Sicherheitsprobleme, die ich oben erwähnt habe.
Kurz gesagt, der einzige Grund, -delete nicht zu verwenden, ist die Kompatibilität mit Systemen, die -delete nicht unterstützen.
find ... -exec rm ...+
ist ähnlich schnell wie diexargs
Version.