Bagaimana cara menghapus direktori dan semua isinya?

142

Dalam bash yang saya tahu adalah itu

rmdir directoryname

akan menghapus direktori tetapi hanya jika itu kosong. Apakah ada cara untuk memaksa menghapus subdirektori?

piperchester
sumber

Jawaban:

217

Perintah berikut akan melakukannya untuk Anda. Namun berhati-hatilah.

rm -rf directoryname
Phillip Nordwall
sumber
52
"-f" adalah "--force" yang mengabaikan beberapa pemeriksaan kewarasan dan dorongan. Perintah yang lebih aman untuk memulai adalah rm -r directoryname.
Jim Paris
Untuk beberapa alasan saya mendapatkan rm: invalid option -- rkesalahan ketika mencoba menghapus direktori dengan rm -r <directoryname>.
Sunspawn
@Sunspawn Periksa pertanyaan terkait ini untuk melihat apakah itu masalahnya.
Marc.2377
1
@ JimParis Saya pikir kata "lebih aman" adalah relatif. Misalkan Anda sedang menulis skrip untuk dijalankan pada komputer jarak jauh. Script itu memiliki perintah yang seharusnya menghapus direktori. Di sini, akan lebih "aman" untuk menggunakan rm -rf directorynamekarena Anda tidak ingin skrip Anda berhenti eksekusi, karena menunggu input pengguna. Tentu saja, Anda harus yakin bahwa menghapus direktori tidak akan membahayakan.
John Red
7

jika rm -rf directorynamegagal, coba gunakan rm -R -f directoryname, atau rm --recursive -f directoryname.

Jika Anda tidak beruntung dengan ini, Anda harus mempertimbangkan menginstal ulang rm atau menukar shell.

saterHater
sumber
Ini adalah opsi yang tersedia di halaman manual rm saya, saya mencarinya dengan mengetik man rmuntuk melihat opsi saya pada penghapusan rekursif dan opsi paksa .
saterHater
Apakah daftar rmhalaman manual Anda -r? Apa fungsinya? (Cobalah di direktori yang Anda buat hanya untuk tujuan pengujian, dengan hanya file dummy (dan mungkin subdirektori) di dalamnya.) Sistem operasi apa yang Anda gunakan?
G-Man
PS Jika rm -rtidak berhasil, itu akan menjadi masalah OS, bukan masalah shell. (Sebenarnya, itu akan menjadi masalah dengan versi rmyang Anda gunakan, sehingga Anda bisa mengatasinya dengan menginstal versi yang berbeda rm, atau mencari sistem Anda untuk melihat apakah Anda sudah memiliki versi berbeda rmdi beberapa direktori selain dari /bin.)
G-Man
Ah benar Saya lupa menyebutkan bahwa saya menggunakan Ubuntu 14,04. Ketika saya berlari man rmdi terminal saya, ia memberi saya file teks dengan lesspenampil teks. Saya menggulir menemukan entri indentasi dengan keseluruhan yang memiliki opsi -R dan --recursive cozied dengan opsi -r , menandakan bahwa semua argumen itu identik.
saterHater
1
edit: sudahkah Anda mencobasudo rm -r directoryName ? Aturan tidak tertulis dari perintah dasar adalah yang -rakan memungkinkan program untuk berjalan secara rekursif pada setiap file sistem file Anda (mulai dari mana pun yang Anda pilih!) Dan bahwa -f akan secara paksa melakukan sesuatu, bahkan jika itu berbahaya . 'cd', 'mv', 'ls' sebagian besar menganggap prinsip ini benar. ls -r /akan menjadi duzie, dan cp -rf / /dev/nullakan menghancurkan semua yang ada di sistem file Anda. <- Jangan pernah menjalankan perintah itu!
saterHater