Bei einer Maschine wie Ihrem MacBook werden Sie keinen großen Leistungsunterschied zwischen den beiden Befehlen feststellen. Wenn Sie sich jedoch die -exec-Version ansehen, können Sie einen subtilen Unterschied feststellen:
sudo find / -iname ".file-to-delete" -exec rm {} \;
Das bedeutet, dass Sie alle Dateien mit dem Namen ".file-to-delete" finden. Diese Suche kann jedoch einige unerwünschte Fehlalarme zurückgeben. Wenn Sie etwas mit sudo machen, sollten Sie etwas vorsichtiger sein. Der Vorteil von -exec rm {} ist, dass Sie Argumente wie folgt an rm übergeben können:
sudo find / -iname "*~" -exec rm -i {} \;
In diesem Beispiel möchte ich die Sicherungsdateien entfernen, die Emacs erstellt. Diese Tilde könnte sich jedoch in einer undurchsichtigen Datei befinden, von der ich nichts weiß und die wichtig sein könnte. Außerdem möchte ich das Löschen bestätigen. Also habe ich dem Befehl rm die Option '-i' hinzugefügt. Dies gibt mir ein interaktives Löschen.
Sie können auch die Verwendung von rm verfeinern, um Verzeichnisse und Dateien zu löschen:
find /usr/local/share/ -iname "useless" -exec rm -r {} \;
Kurz gesagt, mit -exec haben Sie etwas mehr Kontrolle über den tatsächlichen Befehl, mit dem das gefundene Element entfernt wird. Der Vorteil ist, dass Sie ein Tool verwenden, um die Dateien zu finden, und ein anderes Tool, um sie zu entfernen. Auch hat nicht jede Version des Dienstprogramms find die Option -delete. Verwenden Sie also besser jedes Werkzeug für die richtige Arbeit. Dies ist die Unix-Philosophie - ein Tool, ein Job, verwenden Sie sie zusammen, um das zu tun, was Sie tun müssen.
-delete
Schalters vor dem-name
Löschen des angegebenen Dateibaums, also denke ich, dass ich vorsichtig sein muss.