Yanıtlar:
Geçerli dizinin altındaki tüm * .swp dosyalarını kaldırın, findkomutu aşağıdaki formlardan birinde kullanın :
find . -name \*.swp -type f -delete
-deleteSeçenek doğrudan eşleşen dosyaları siler bulmak anlamına gelir. OP'nin asıl sorusuyla en iyi eşleşme budur.
Araç -type fbulma aracını kullanmak yalnızca dosyaları işler.
find . -name \*.swp -type f -exec rm -f {} \;
find . -name \*.swp -type f -exec rm -f {} +
Seçenek -exec, her dosya için rastgele bir komut çalıştırılmasına izin verir. İlk değişken komutu her dosya için bir kez çalıştıracak, ikincisi ise {}olabildiğince çok parametreyle değiştirerek mümkün olduğunca az sayıda komut çalıştıracaktır .
find . -name \*.swp -type f -print0 | xargs -0 rm -f
Çıktıyı borulamak xargs, mümkün olandan daha karmaşık dosya başına komutlar halinde kullanılır -exec. Seçenek -print0, findeşleşmeleri yeni satır yerine ASCII NULL ile ayırmayı ve NULL ile ayrılmış girdi beklemesini -0söyler xargs. Bu, boru yapısının beyaz boşluk içeren dosya adları için güvenli olmasını sağlar.
Daha man findfazla detay ve örnek için bakınız .
Ev dizini altında arama yapmak için (ve GNU 'find' ve 'xargs' kullanarak), şunları kullanırdım:
find $HOME -name '*.swp' -print0 | xargs -0 rm -f
' -print0' Ve ' -0' kullanımı , adların ASCII NUL '\ 0' karakterleriyle sınırlandırılacağı ve adlarda boşluk vb. İçeren dosya yollarını işleyeceği anlamına gelir. Dizinin altında '.swp' ile biten dizinlerin (veya cihaz dosyalarının veya FIFO'ların veya diğer olmayan dosyaların) olabileceğini düşünüyorsanız -type f, 'bulmak' için ' ' seçeneğini ekleyebilirsiniz . Yalnızca dizinleriniz varsa, yukarıdaki komut bunları gürültülü bir şekilde kaldıramaz.