xargs
melakukan semua keajaiban:
find . -name test -type d -print0|xargs -0 rm -r --
xargs
mengeksekusi perintah yang diteruskan sebagai parameter, dengan argumen diteruskan ke stdin.
Ini menggunakan rm -r
untuk menghapus direktori dan semua turunannya.
--
menunjukkan akhir argumen, untuk menghindari jalur yang dimulai dengan -
dari diperlakukan sebagai argumen.
-print0
memberi tahu find
untuk mencetak \0
karakter, bukan baris baru; dan -0
memberi tahu xargs
untuk memperlakukan hanya \0
sebagai pemisah argumen.
Ini memanggil rm
dengan banyak direktori sekaligus, menghindari overhead pemanggilan rm
terpisah untuk setiap direktori.
Sebagai alternatif, find
juga dapat menjalankan perintah untuk setiap yang dipilih berkas:
find . -name test -type d -exec rm -r {} \;
Dan yang ini, dengan kinerja yang lebih baik, karena akan memanggil rm
dengan beberapa direktori sekaligus :
find . -name test -type d -exec rm -r {} +
(Perhatikan +
pada akhirnya; yang ini setara dengan xargs
solusi.)
find /path/to/dir -name "test" -type d -delete
-
-nama: mencari nama yang dilewati. Anda dapat menggunakan
-regex
untuk memberikan nama berdasarkan ekspresi reguler -
-ketik: mencari jenis file.
d
hanya mencari direktori -
-hapus: tindakan yang menghapus daftar yang ditemukan.
Atau:
find /path/to/dir -name "test" -type d -exec rm -rf {} \;
Sebagai J.F. Sebastian dinyatakan dalam komentar:
Anda dapat menggunakan +
bukannya \;
untuk melewati lebih dari satu direktori sekaligus.
cara lain untuk melakukannya adalah
find . -name test -exec rm -R "{}" \;
Tautan bermanfaat tentang temukan:http://www.softpanorama.info/Tools/Find/using_exec_option_and_xargs_in_find.shtml