Bagaimana saya bisa menghapus semua file .swp di semua subdirektori saya di Linux?
Bagaimana saya bisa menghapus semua file .swp di semua subdirektori saya di Linux?
Jawaban:
Hapus semua file * .swp di bawah direktori saat ini, gunakan find
perintah di salah satu bentuk berikut:
find . -name \*.swp -type f -delete
The -delete
pilihan berarti menemukan akan langsung menghapus file yang cocok. Ini adalah kecocokan terbaik dengan pertanyaan aktual OP.
Menggunakan -type f
means find hanya akan memproses file.
find . -name \*.swp -type f -exec rm -f {} \;
find . -name \*.swp -type f -exec rm -f {} +
Opsi -exec
memungkinkan 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 xargs
digunakan dari perintah per-file yang lebih kompleks daripada yang mungkin dengan -exec
. Opsi -print0
memberi tahu find
untuk memisahkan kecocokan dengan ASCII NULL alih-alih baris baru, dan -0
memberi tahu xargs
untuk mengharapkan input yang dipisahkan NULL. Ini membuat konstruksi pipa aman untuk nama file yang mengandung spasi putih.
Lihat man find
detail dan contoh lebih lanjut.
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
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.