Yanıtlar:
Geçerli dizinin altındaki tüm * .swp dosyalarını kaldırın, find
komutu aşağıdaki formlardan birinde kullanın :
find . -name \*.swp -type f -delete
-delete
Seç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 f
bulma 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
, find
eşleşmeleri yeni satır yerine ASCII NULL ile ayırmayı ve NULL ile ayrılmış girdi beklemesini -0
sö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 find
fazla 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.