Saya tahu ini akan menghapus semua yang ada di subdirektori dan di bawahnya:
rm -rf <subdir-name>
Tetapi bagaimana Anda menghapus semua yang ada di direktori saat ini serta setiap subdirektori di bawahnya dan konten semua subdirektori tersebut?
Saya tahu ini akan menghapus semua yang ada di subdirektori dan di bawahnya:
rm -rf <subdir-name>
Tetapi bagaimana Anda menghapus semua yang ada di direktori saat ini serta setiap subdirektori di bawahnya dan konten semua subdirektori tersebut?
Jawaban:
Praktikkan komputasi yang aman. Cukup naik satu tingkat dalam hierarki dan jangan gunakan ekspresi karakter pengganti:
Kedua tanda hubung tersebut
--
menyatakanrm
bahwa<dir-to-remove>
ini bukanlah opsi baris perintah, bahkan jika itu dimulai dengan tanda hubung.sumber
rm ./
Anda mungkin tidak sengaja mengetikrm . /
yang bisa menjadi bencana.Akan menghapus semua file / direktori di bawah yang sekarang.
Jika Anda ingin melakukan hal yang sama dengan direktori lain yang namanya Anda miliki, Anda cukup menamainya
Jika Anda ingin menghapus tidak hanya sub-direktori dan file-nya, tetapi juga direktori itu sendiri, hilangkan
-mindepth 1
. Lakukan tanpa-delete
mendapatkan daftar hal-hal yang akan dihapus.sumber
-mindepth 1
jika Anda menentukan direktori (find <name-of-directory> -mindepth 1 -delete
). Jika tidak, Johannes benar, ia tidak akan menghapus direktori kerja saat ini (saat menggunakanfind -delete
).find -mindepth 1 -delete
tetapi saya mendapatkannyaillegal option -- m
tetapi berhasil dengan baik ketika saya menghapus opsi mindepthfind . -delete
Yang selalu saya lakukan adalah mengetik
dan kemudian tekan ESC- * , dan bash akan memperluas * ke daftar eksplisit file dan direktori di direktori kerja saat ini.
Manfaatnya adalah:
Sebenarnya, saya sangat menyukai ini sehingga saya menjadikannya sebagai perilaku default untuk TAB dengan baris ini di .bashrc:
sumber
--
dalam jawaban ini? Pendekatan ini luar biasa secara keseluruhan harus saya katakan.Menggunakan
Pembaruan:
.
Singkatan dari direktori saat ini, tetapi kami tidak dapat menggunakan ini. Perintah tersebut tampaknya memiliki pemeriksaan eksplisit untuk.
dan..
. Gunakan wildcard globbing sebagai gantinya. Tapi ini bisa berisiko.Versi IMO yang lebih aman digunakan:
(ini meminta Anda untuk konfirmasi sebelum menghapus setiap file / direktori.)
sumber
Benar bahwa
rm –rf .
akan menghapus semua yang ada di arus secara langsung termasuk semua subdirektori dan isinya. Titik tunggal (.
) berarti direktori saat ini. hati-hati jangan lakukanrm -rf ..
karena tanda titik ganda (..
) berarti direktori sebelumnya.Ini dikatakan, jika Anda seperti saya dan memiliki beberapa jendela terminal terbuka pada saat yang sama, Anda sebaiknya aman dan menggunakan
rm -ir .
Mari kita lihat argumen perintah untuk memahami alasannya.Pertama, jika Anda melihat
rm
halaman manual perintah (diman rm
bawah sebagian besar Unix) Anda melihat itu–r
berarti "hapus isi direktori secara rekursif". Jadi, melakukanrm -r .
sendiri akan menghapus semua yang ada di direktori saat ini dan semua yang ada di bawahnya.Dalam
rm –rf .
penambahan -f berarti "abaikan file yang tidak ada, jangan pernah meminta". Perintah itu menghapus semua file dan direktori di direktori saat ini dan tidak pernah meminta Anda untuk mengonfirmasi bahwa Anda benar-benar ingin melakukannya.-f
sangat berbahaya jika Anda menjalankan perintah di bawah pengguna hak istimewa karena Anda dapat menghapus konten direktori mana pun tanpa mendapat kesempatan untuk memastikan itu benar-benar yang Anda inginkan.Sedangkan besarnya, di
rm -ri .
dalam-i
yang menggantikan-f
berarti "prompt sebelum penghapusan apapun". Ini berarti Anda akan mendapat kesempatan untuk mengatakan "oups! Bukan itu yang saya inginkan" sebelum rm dengan senang hati menghapus semua file Anda.Pada hari-hari awal sysadmin saya, saya melakukan sebuah
rm -rf /
sistem sambil login dengan hak akses penuh (root). Hasilnya adalah dua hari berlalu pemulihan sistem dari cadangan. Itulah mengapa saya sekarang bekerjarm -ri
sekarang.sumber
Bagaimana tentang:
sumber
Jangan lakukan itu! Itu berbahaya! PASTIKAN ANDA BERADA DI DIREKTUR YANG TEPAT!
sumber
membuat yakin Anda berada di direktori yang benar
sumber
Solusi paling aman & umum yang paling sederhana ini mungkin:
sumber
Saya yakin jawaban ini lebih baik:
/unix/12593/how-to-remove-all-the-files-in-a-directory
pada dasarnya Anda naik satu tingkat, dan kemudian berkata hapus semua yang ada di dalam direktori X. Dengan cara ini Anda masih menentukan folder mana yang harus dihapus isinya, yang lebih aman daripada hanya mengatakan 'hapus semuanya di sini ", sambil mempertahankan folder asli, (yang terkadang Anda inginkan karena Anda tidak diizinkan atau tidak ingin untuk mengubah izin folder yang ada)
sumber