MacBook'unuz gibi bir makine için iki komut arasındaki performansta çok fazla fark bulamazsınız. Ancak, -exec versiyonuna bakarsanız, ince bir fark görebilirsiniz:
sudo find / -iname ".file-to-delete" -exec rm {} \;
Bu, tüm bu dosyaları ".file-to-delete" ismiyle bulacağınız anlamına gelir. Bununla birlikte, bu arama bazı istenmeyen yanlış pozitifler getirebilir. Su ile bir şey yaparken biraz daha dikkatli olmalısın. -Exec rm {} kullanmanın avantajı, rm'ye benzer argümanları geçebilmenizdir:
sudo find / -iname "*~" -exec rm -i {} \;
Bu örnekte, emacs'ın yaptığı yedekleme dosyalarını kaldırmak istiyorum. Bununla birlikte, bu bilmediğim, bilmediğim ve önemli olabileceğim gizli bir dosyada olabilir. Artı silmeyi onaylamak istiyorum. Bu yüzden '-i' seçeneğini rm komutuna koydum. Bu bana etkileşimli bir silme verecektir.
Ayrıca, dosyaların yanı sıra dizinleri silmek için rm kullanımını daraltabilirsiniz:
find /usr/local/share/ -iname "useless" -exec rm -r {} \;
Kısacası, -exec, bulunan öğeyi silen gerçek komut üzerinde size biraz daha kontrol sağlar. Bunun avantajı, dosyaları bulmak için bir aracı, bunları kaldırmak için başka bir aracı kullanmanızdır. Ayrıca find yardımcı programının her sürümünde -delete seçeneği yoktur. Her bir aleti kendi uygun işi için kullanmak çok daha iyi. Bu unix felsefesidir - bir araç, bir iş, yapmanız gerekenleri yapmak için bunları birlikte kullanın.
-delete
anahtarı-name
belirtilen dosya ağacını silmeden önce kullandığımı da okudum , bu yüzden dikkatli olmalıyım.