Solusi 1:
Saya biasanya menemukannya menggunakan -exec
opsi untuk find
agar lebih mudah dan tidak membingungkan. Coba ini:
find . -name vmware-*.log -exec rm -i {} \;
Semuanya setelah -exec
dianggap sebagai perintah untuk menjalankan setiap hasil, hingga ;
, yang di-escape di sini agar diteruskan ke find
. {}
diganti dengan nama file yaitu find
biasanya akan dicetak.
Setelah Anda memverifikasi itu melakukan apa yang Anda inginkan, Anda dapat menghapus -i
.
Solusi 2:
Jika Anda memiliki GNU find
Anda dapat menggunakan -delete
opsi:
find . -name "vmware-*.log" -delete
Untuk menggunakan xargs
dan hindari masalah spasi pada nama file:
find . -name vmware-*.log -print0 | xargs -0 rm
Namun, file log Anda tidak boleh memiliki spasi di namanya. Dokumen pengolah kata dan file MP3 kemungkinan memilikinya, tetapi Anda harus dapat mengontrol nama file log Anda.
Solusi 3:
Anda dapat mengetahui find
untuk membatasi daftar keluaran dengan NULL, dan xargs
untuk menerima daftar inputnya sama:
$ ls -l "file 1" "file 2"
-rw-r--r-- 1 james james 0 Oct 19 13:28 file 1
-rw-r--r-- 1 james james 0 Oct 19 13:28 file 2
$ find . -name 'file *' -print0 | xargs -0 ls -l
-rw-r--r-- 1 james james 0 Oct 19 13:28 ./file 1
-rw-r--r-- 1 james james 0 Oct 19 13:28 ./file 2
$ find . -name 'file *' -print0 | xargs -0 rm -v
removed `./file 2'
removed `./file 1'
Selain itu, pastikan Anda keluar dari *
, baik dengan garis miring terbalik, atau dengan memuat vmware-*.log
dalam tanda kutip tunggal, jika tidak, shell Anda mungkin mencoba mengembangkannya sebelum meneruskannya ke find
.
Solusi 4:
Jangan lupa temukan -delete
pilihan. Itu menghapus file tanpa kesalahan dengan karakter khusus...