Tüm alt dizinlerdeki eşleşen dosyaları sil


76

Linux altındaki tüm alt dizinlerimdeki tüm .swp dosyalarını nasıl kaldırabilirim?


3
Çöp kutusu gibi programlara bakmayı unutma, böylece rm kullanmak yerine geri silebilirsin. code.google.com/p/trash-cli (Aşağıdaki yanıtların hepsinde 'rm' yerine 'trash' yazmanız gerekir.)

Yanıtlar:


136

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 .


16

find . -name '*.swp' -delete

Silme işleminin kendisi, dosya adına gömülü alan riskini ortadan kaldırır, ... Ekstra güvenlik -type fiçin, yalnızca dosyalar için eklemeyi düşünün .


4
find /path -type f -name "*.swp" -delete
find /path -type f -name "*.swp" -exec rm -f "{}" +;

bash 4.0

shopt -s globstar
rm -f /path/**/*.swp

2

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.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.