Solusi yang jelas menghasilkan kode keluar 1:
bash$ rm -rf .*
rm: cannot remove directory `.'
rm: cannot remove directory `..'
bash$ echo $?
1
Salah satu solusi yang mungkin akan melewatkan "." dan ".." direktori tetapi hanya akan menghapus file yang namanya lebih dari 3 karakter:
bash$ rm -f .??*
Jawaban:
Harus menangkap semua kasus. The. ?? * hanya akan cocok dengan 3+ nama file karakter (seperti yang dijelaskan dalam jawaban sebelumnya),. [^.] Akan menangkap dua entri karakter (selain ..).
sumber
zsh
. Ada saran?zsh
default, kecocokan wildcard kosong diperlakukan sebagai kesalahan; sedangkan denganbash
itu hanya disahkan tidak berubah. Untuk membuatzsh
berperilaku dengan cara yang sama Anda dapat menggunakan perintahunsetopt nomatch
Ini cocok dengan semua file di direktori saat ini yang dimulai dengan a
.
dan menghapusnya secara rekursif. File tersembunyi di direktori tidak tersembunyi tidak tersentuh.Jika Anda benar-benar ingin menghapus semuanya dari direktori,
find -delete
cukuplah.sumber
.
Cara terbaik mungkin adalah:
ubah rm ke ls -l jika Anda hanya ingin melihat apa yang akan dihapus, untuk meng-verbose output, Anda mungkin ingin menambahkan opsi -v ke rm
ps. jangan lupa tentang mengakhiri '\;'
sumber
sumber