Для такой машины, как ваш macbook, вы не найдете большой разницы в производительности между этими двумя командами. Однако, если вы посмотрите на версию -exec, вы увидите небольшую разницу:
sudo find / -iname ".file-to-delete" -exec rm {} \;
Это означает, что вы найдете все эти файлы с именем «.file-to-delete». Однако этот поиск может вернуть некоторые нежелательные ложные срабатывания. Делая что-то с sudo, вы должны быть немного осторожнее. Преимущество использования -exec rm {} заключается в том, что вы можете передавать аргументы в rm следующим образом:
sudo find / -iname "*~" -exec rm -i {} \;
В этом примере я хочу удалить те файлы резервных копий, которые делает emacs. Однако эта тильда может быть в каком-то непонятном файле, о котором я не знаю, и может быть важным. Плюс хочу подтвердить удаление. Поэтому я добавил опцию '-i' в команду rm. Это даст мне интерактивное удаление.
Также вы можете уточнить использование rm для удаления каталогов и файлов:
find /usr/local/share/ -iname "useless" -exec rm -r {} \;
Вкратце, -exec дает вам немного больше контроля над самой командой, которая удаляет найденный элемент. Преимущество заключается в том, что вы используете один инструмент для поиска файлов, другой инструмент для их удаления. Также не каждая версия утилиты поиска имеет опцию -delete. Поэтому лучше использовать каждый инструмент для его правильной работы. Это философия Unix - один инструмент, одна работа, используйте их вместе, чтобы делать то, что вам нужно.
-delete
переключателя перед-name
удалением указанного дерева файлов, поэтому я должен быть осторожным.