Đối với một máy như macbook của bạn, bạn sẽ không tìm thấy nhiều sự khác biệt về hiệu suất giữa hai lệnh. Tuy nhiên, nếu bạn nhìn vào phiên bản -exec, bạn có thể thấy một sự khác biệt tinh tế:
sudo find / -iname ".file-to-delete" -exec rm {} \;
Điều này có nghĩa là bạn sẽ tìm thấy tất cả các tệp có tên ".file-to-xóa". Tuy nhiên, tìm kiếm này có thể trả về một số dương tính giả không mong muốn. Khi làm một cái gì đó với sudo bạn nên cẩn thận hơn một chút. Ưu điểm của việc sử dụng -exec rm {} là bạn có thể truyền các đối số cho rm như thế này:
sudo find / -iname "*~" -exec rm -i {} \;
Trong ví dụ này tôi muốn xóa các tệp sao lưu mà emacs tạo ra. Tuy nhiên, dấu ngã đó có thể nằm trong một số tệp tối nghĩa mà tôi không biết và có thể quan trọng. Thêm vào đó tôi muốn xác nhận xóa. Vì vậy, tôi đặt tùy chọn '-i' trên lệnh rm. Điều này sẽ cho tôi một tương tác xóa.
Ngoài ra, bạn có thể tinh chỉnh việc sử dụng rm để xóa các thư mục cũng như các tệp:
find /usr/local/share/ -iname "useless" -exec rm -r {} \;
Tóm lại, -exec cung cấp cho bạn thêm một chút quyền kiểm soát đối với lệnh thực tế loại bỏ mục tìm thấy. Ưu điểm là bạn sử dụng một công cụ để tìm các tệp, một công cụ khác để loại bỏ chúng. Ngoài ra, không phải mọi phiên bản của tiện ích tìm kiếm đều có tùy chọn -delete. Vì vậy, tốt hơn để sử dụng mỗi công cụ cho công việc thích hợp của nó. Đây là triết lý unix - một công cụ, một công việc, sử dụng chúng cùng nhau để làm những gì bạn cần làm.
-delete
tắc trước khi-name
xóa cây tập tin được chỉ định, vì vậy tôi đoán tôi phải cẩn thận.