Hapus file yang cocok di semua subdirektori


77

Bagaimana saya bisa menghapus semua file .swp di semua subdirektori saya di Linux?


3
Jangan lupa melihat program seperti trash-cli sehingga Anda dapat membatalkan penghapusan, daripada menggunakan rm. code.google.com/p/trash-cli (Anda baru saja mengganti 'rm' dengan 'trash' di semua jawaban di bawah ini.)

Jawaban:


137

Hapus semua file * .swp di bawah direktori saat ini, gunakan findperintah di salah satu bentuk berikut:

  • find . -name \*.swp -type f -delete

    The -deletepilihan berarti menemukan akan langsung menghapus file yang cocok. Ini adalah kecocokan terbaik dengan pertanyaan aktual OP.

    Menggunakan -type fmeans find hanya akan memproses file.

  • find . -name \*.swp -type f -exec rm -f {} \;
    find . -name \*.swp -type f -exec rm -f {} +

    Opsi -execmemungkinkan find untuk mengeksekusi perintah arbitrer per file. Varian pertama akan menjalankan perintah sekali per file, dan yang kedua akan menjalankan perintah sesedikit mungkin dengan mengganti {}parameter sebanyak mungkin.

  • find . -name \*.swp -type f -print0 | xargs -0 rm -f

    Piping output ke xargsdigunakan dari perintah per-file yang lebih kompleks daripada yang mungkin dengan -exec. Opsi -print0memberi tahu finduntuk memisahkan kecocokan dengan ASCII NULL alih-alih baris baru, dan -0memberi tahu xargsuntuk mengharapkan input yang dipisahkan NULL. Ini membuat konstruksi pipa aman untuk nama file yang mengandung spasi putih.

Lihat man finddetail dan contoh lebih lanjut.


16

find . -name '*.swp' -delete

Setelah ditemukan, hapus itu sendiri menghilangkan risiko ruang yang disematkan dalam nama file, ... Untuk keamanan tambahan, pertimbangkan -type funtuk menambahkan file saja.


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

Untuk mencari di bawah direktori home saya (dan menggunakan GNU 'find' dan 'xargs'), saya akan menggunakan:

find $HOME -name '*.swp' -print0 | xargs -0 rm -f

Penggunaan ' -print0' dan ' -0' berarti bahwa nama-nama akan dibatasi oleh karakter ASCII NUL '\ 0', dan ini akan menangani jalur file dengan kosong dll dalam namanya. Jika Anda merasa memiliki direktori (atau file perangkat, atau FIFO, atau non-file lainnya) di bawah direktori Anda yang diakhiri dengan '.swp', Anda dapat menambahkan opsi ' -type f' untuk 'menemukan'. Jika Anda hanya memiliki direktori, perintah di atas akan gagal menghapusnya dengan berisik.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.