Bagaimana cara menghapus direktori tidak kosong di Terminal?

630

Bagaimana cara menghapus direktori berikut?

Saya mengetik:

rmdir lampp

Kesalahan ini muncul:

rmdir: failed to remove `lampp': Directory not empty

Apakah ada perintah untuk menghapus semua file dalam direktori dan menghapus folder direktori?

naveen
sumber
1
Saya tidak dapat menghapus direktori seperti "Folder Baru" menggunakan semua perintah terperinci di atas. Ini dua kata. Tetapi saya ingin menghapus direktori itu. Setiap saran akan disambut. T.Divakara, Bengaluru, India
Ini adalah ruang kosong dalam nama file, coba gunakan 'tanda kutip'> rmdir 'Folder Baru' <kemudian folder tersebut dibuang, atau gunakan karakter pelarian untuk karakter yang tidak terlihat.
Ken Mollerup
2
Hanya melakukan rm -r lamppakan berhasil.
John Strood

Jawaban:

877

Gunakan perintah di bawah ini:

rm -rf lampp

Ini menghapus semua file dan folder yang terdapat dalam lamppdirektori.

Jika pengguna tidak memiliki izin untuk menghapus folder:

Tambahkan sudodi awal perintah:

sudo rm -rf folderName

Kalau tidak, tanpa sudoAnda akan dikembalikan izin. Dan itu praktik yang baik untuk mencoba tidak menggunakan -fsaat menghapus direktori:

sudo rm -r folderName

Catatan: ini dengan asumsi Anda sudah berada pada level folder yang sama dengan yang ingin Anda hapus di terminal, jika tidak:

sudo rm -r /path/to/folderName

FYI: Anda dapat menggunakan huruf -f, -r, -v:

  • -f = untuk mengabaikan file yang tidak ada, jangan pernah meminta
  • -r = untuk menghapus direktori dan isinya secara rekursif
  • -v = untuk menjelaskan apa yang sedang dilakukan
Shantanu Banerjee
sumber
69
Menurut pendapat saya, itu adalah praktik yang baik untuk tidak menambahkan "f" pada upaya pertama. Tujuannya adalah untuk mengabaikan permintaan peringatan tertentu yang mungkin penting, terutama jika Anda tidak sengaja melakukannya di / dari direktori yang salah. Menurut pendapat saya itu baik untuk mencoba tanpa "f" pertama, maka hanya jika Anda menemukan banyak prompt peringatan dan Anda yakin tidak apa-apa untuk mengabaikan semuanya, Ctrl + C keluar dari itu dan ulangi perintah dengan " f ".
thomasrutter
@ BKSpurgeon tidak kecuali Anda tidak sengaja mengetik --no-preserve-rootjuga .
muru
@thomasrutter ... Setuju. Pemilik file "xxx": root dan grup: root dapat dihapus dengan saklar -f ; dan tanpa sudo . Ini adalah pesan tanpa -f : " rm: hapus file biasa yang dilindungi tulis '/ home / william/.cache/netbeans/v08.01/tmp/xxx'? _". _Latih dengan lembut.
Akan
95
rm -R lampp

Namun, Anda harus berhati-hati dengan perintah rekursif seperti ini, karena mudah untuk secara tidak sengaja menghapus lebih banyak dari yang Anda inginkan.

Sebaiknya periksa ulang direktori yang Anda masuki, dan apakah Anda mengetik perintah dengan benar, sebelum menekan Enter.

Versi lebih aman

rm -R -i lampp

Menambahkan -imembuatnya sedikit lebih aman, karena itu akan meminta Anda pada setiap penghapusan. Namun, jika Anda menghapus banyak file ini tidak akan sangat praktis. Tetap saja, Anda bisa mencoba ini dulu.

Catatan tentang -f opsi:

Banyak orang menyarankan menggunakan -f(menggabungkannya ke dalam -Rfatau -rf), mengklaim bahwa itu menghilangkan prompt yang mengganggu. Namun, dalam kasus yang normal Anda tidak membutuhkannya, dan menggunakannya menekan beberapa masalah yang Anda mungkin tidak ingin tahu tentang. Ketika Anda menggunakannya, Anda tidak akan diperingatkan jika argumen Anda menyediakan direktori atau file yang tidak ada: rm hanya akan diam-diam gagal menghapus apa pun. Sebagai aturan umum, coba dulu tanpa -f: jika ada masalah dengan argumen Anda, maka Anda akan melihat. Jika Anda mulai mendapatkan terlalu banyak konfirmasi tentang file tanpa akses tulis, maka Anda dapat mencobanya-f. Atau, jalankan perintah dari pengguna (atau superuser menggunakan sudo) yang memiliki izin penuh untuk file dan direktori yang Anda hapus untuk mencegah permintaan ini di tempat pertama.

thomasrutter
sumber
4
Catatan: huruf kecil -rjuga dapat digunakan dan memiliki efek yang sama di sini. Saya hanya cenderung menggunakan huruf besar -Rkarena konsisten dengan perintah lain yang saya gunakan seperti grepdan chmod, beberapa di antaranya hanya mendukung bentuk huruf besar.
thomasrutter
Yang ini bekerja untuk saya menggunakan adb (jembatan debug Android) di Android. Sedang mencoba rm -rf tetapi tidak berhasil. Harus menggunakan rm -R. Terima kasih.
raddevus
Ini adalah solusi yang baik, terutama jika tidak berpengalaman menggunakan terminal Bash. Perintah dapat disingkat menjadi rm -ir FOLDER.
AlainD
24

Ada banyak cara untuk menghapus direktori melalui mode CLI. Itu tergantung pada cara mana Anda merasa nyaman.

rm -rvf /path/to/directory  
  • -r = hapus direktori dan isinya secara rekursif
  • -v = jelaskan apa yang sedang dilakukan
  • -f = mengabaikan file yang tidak ada, tidak pernah meminta

Jika Anda baru di Linux, gunakan halaman manual dari perintah ( man rm) untuk opsi lebih banyak dan lebih akurat.

papseddy
sumber
-2

Saya mengalami masalah dengan itu hari ini, tetapi saya mengatasinya dengan sudo.

Peringatan: Pastikan Anda ingin menghapus semuanya sebelum menggunakan perintah di bawah ini.

$ sudo rm -R [Directory name]

Saya berhasil melakukan ini hari ini, dan menghapus banyak direktori tidak kosong yang saya pastikan tidak saya inginkan / butuhkan.

Saya menggunakan 14,04 LTS

Thomas
sumber
4
"SUDO" bukan perintah - "sudo" adalah. Meskipun demikian, Anda tidak menggunakan sudo untuk menghapus direktori yang tidak kosong, Anda menggunakannya untuk menghapus file yang bukan milik Anda. Melakukan hal ini tentu saja berbahaya dan tidak terlalu pintar, karena Anda tidak boleh secara membabi buta menghapus file yang bukan milik Anda.
Marty Fried
-3

Ngomong-ngomong saya pribadi ingin menghapus direktori yang berisi file yang dilindungi tulis / s (.git dan sub direktori) dan akhirnya menyadari saya juga perlu menjadi pengguna super agar berhasil menghapus file-file ini. Inilah yang saya lakukan:

#became super user
sudo su -

#deleted contents of, and then the directory, harvey_snake/
rm -R harvey_snake/
Harvey Williams
sumber
4
Saya rasa Anda tidak perlu di sudo susini. Awali saja rmperintahnya dengan sudo. Untuk keamanan, ini adalah praktik yang baik (menurut para pendukung sudo) untuk tidak tetap berada di root prompt saat tidak diperlukan.
thomasrutter
2
Juga, pastikan Anda berada di direktori tempat Anda berada sudo rm -r.
Tony Martin
Anda bisa membuat perintah root-relative ( /directory_name) sehingga tidak ada keraguan tentang direktori yang Anda hapus.
Yaakov Ainspan