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.
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.
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.
Setelah ditemukan, hapus itu sendiri menghilangkan risiko ruang yang disematkan dalam nama file, ... Untuk keamanan tambahan, pertimbangkan -type funtuk menambahkan file saja.
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.
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 tahufind
untuk memisahkan kecocokan dengan ASCII NULL alih-alih baris baru, dan-0
memberi tahuxargs
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.sumber
find . -name '*.swp' -delete
Setelah ditemukan, hapus itu sendiri menghilangkan risiko ruang yang disematkan dalam nama file, ... Untuk keamanan tambahan, pertimbangkan
-type f
untuk menambahkan file saja.sumber
bash 4.0
sumber
Untuk mencari di bawah direktori home saya (dan menggunakan GNU 'find' dan 'xargs'), saya akan menggunakan:
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.sumber