У такій машині, як ваш macbook, ви не знайдете великої різниці у продуктивності між двома командами. Однак, якщо ви подивитесь на версію -exec, ви можете побачити тонку різницю:
sudo find / -iname ".file-to-delete" -exec rm {} \;
Це означає, що ви знайдете всі ці файли з назвою ".file-to-delete". Однак цей пошук може повернути небажані помилкові позитиви. Роблячи щось із судо, ви повинні бути трохи обережнішими. Перевага використання -exec rm {} полягає в тому, що ви можете передавати аргументи в rm так:
sudo find / -iname "*~" -exec rm -i {} \;
У цьому прикладі я хочу видалити ті файли резервного копіювання, які створює emacs. Однак цей тильд може бути в якомусь незрозумілому файлі, про який я не знаю і може бути важливим. Плюс я хочу підтвердити видалення. Тому я ставлю опцію '-i' команді rm. Це дасть мені інтерактивне видалення.
Також ви можете уточнити використання rm для видалення каталогів, а також файлів:
find /usr/local/share/ -iname "useless" -exec rm -r {} \;
Якщо коротко, -exec дає вам трохи більше контролю над фактичною командою, яка видаляє знайдений елемент. Перевага полягає в тому, що ви використовуєте один інструмент для пошуку файлів, інший інструмент для їх видалення. Також не кожна версія утиліти find має опцію -delete. Тож краще використовувати кожен інструмент для його належної роботи. Це філософія unix - один інструмент, одна робота, використовуйте їх разом, щоб робити те, що вам потрібно зробити.
-delete
перемикача перед-name
видаленням вказаного дерева файлів, тому, мабуть, я повинен бути обережним.