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
-regexuntuk memberikan nama berdasarkan ekspresi reguler -
-ketik: mencari jenis file.
dhanya 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