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:
cd ..; rm -rf -- <dir-to-remove>
Kedua tanda hubung tersebut --
menyatakan rm
bahwa <dir-to-remove>
ini bukanlah opsi baris perintah, bahkan jika itu dimulai dengan tanda hubung.
rm ./
Anda mungkin tidak sengaja mengetik rm . /
yang bisa menjadi bencana.
Akan menghapus semua file / direktori di bawah yang sekarang.
find -mindepth 1 -delete
Jika Anda ingin melakukan hal yang sama dengan direktori lain yang namanya Anda miliki, Anda cukup menamainya
find <name-of-directory> -mindepth 1 -delete
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.
-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 menggunakan find -delete
).
find -mindepth 1 -delete
tetapi saya mendapatkannya illegal option -- m
tetapi berhasil dengan baik ketika saya menghapus opsi mindepth find . -delete
Yang selalu saya lakukan adalah mengetik
rm -rf *
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:
bind TAB:insert-completions
--
dalam jawaban ini? Pendekatan ini luar biasa secara keseluruhan harus saya katakan.
Menggunakan
rm -rf *
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:
rm -ri *
(ini meminta Anda untuk konfirmasi sebelum menghapus setiap file / direktori.)
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 lakukan rm -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 (di man rm
bawah sebagian besar Unix) Anda melihat itu –r
berarti "hapus isi direktori secara rekursif". Jadi, melakukan rm -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 bekerja rm -ri
sekarang.
membuat yakin Anda berada di direktori yang benar
rm -rf *
Saya yakin jawaban ini lebih baik:
/unix/12593/how-to-remove-all-the-files-in-a-directory
Jika direktori level teratas Anda dipanggil
images
, jalankanrm -r images/*
. Ini menggunakan operator shell glob*
untuk dijalankanrm -r
di setiap file atau direktori di dalam gambar.
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)