apakah mungkin menggunakan rm untuk menghapus file dan direktori yang cocok dengan suatu pola secara rekursif tanpa menggunakan perintah lain?
unix
maintenance
rm
pengguna15586
sumber
sumber
find | grep | xargs rm
. Jika ada file dengan spasi (atau baris baru), ini akan pecah (dan tergantung pada nama file dan di mana spasi) mungkin menghapus hal-hal yang tidak ingin Anda hapus.find … -print0 | xargs -0 rm
akan jauh lebih kuat. Ini berarti, namun Anda tidak dapat menggunakangrep
dan harus menggunakanfind
predikat untuk mencocokkan dan mencetak hanya file yang diinginkan. Contoh kedua warren akan lebih kuatfind -type f -name '*~' -print0 | xargs -0 rm
."tanpa menggunakan perintah lain"
Tidak.
sumber
Menggunakan Bash, dengan
globstar
set, ya :Cobalah dengan mis
ls -1
terlebih dahulu, sebelumrm
mendaftar file yang cocok.Anda mengatur opsi melalui mis
shopt -s globstar
.Atau,
find
varian yang lebih pendek :atau untuk GNU
find
:atau alternatif lain untuk non-GNU
find
(sedikit lebih lambat):Untuk juga menghapus direktori, seperti yang Anda minta: cukup ubah
rm
kerm -r
dalam perintah di atas dan lewati pencocokan hanya-type f
difind
perintah.sumber
Saya akan mengasumsi "rm -rf" di mana kombinasi nama file, dan pola yang cocok seperti * dan? dll (mis. todays_log_2009 ????. log). Itu akan mulai dari Dir saat ini dan bekerja secara rekursif menghapus file yang sesuai dengan pola itu.
sumber
Jika Anda menggunakan zsh (1) , aktifkan "extended globbing" dengan
setopt extendedglob
.zshrc. Awalan pola dengan '** /' akan dihapus secara rekursif:% rm -rf ** / <pola>
Namun, jika ada banyak file yang harus Anda hapus, Anda harus mencari (1) dengan xargs (1) atau -exec, dan saya juga merekomendasikan melakukannya di skrip shell.
sumber