วิธีลบไดเรกทอรีที่ไม่ว่างในเทอร์มินัล


630

ฉันจะลบไดเรกทอรีต่อไปนี้ได้อย่างไร

ฉันพิมพ์:

rmdir lampp

ข้อผิดพลาดนี้เกิดขึ้น:

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

มีคำสั่งให้ลบไฟล์ทั้งหมดในไดเรกทอรีและลบโฟลเดอร์ไดเรกทอรีหรือไม่?


1
ฉันไม่สามารถลบไดเรกทอรีเช่น "โฟลเดอร์ใหม่" โดยใช้คำสั่งรายละเอียดทั้งหมดข้างต้น มันเป็นคำสองคำ แต่ฉันต้องการลบไดเรกทอรีนั้น ข้อเสนอแนะใด ๆ จะได้รับการต้อนรับ T.Divakara, Bengaluru, India

เป็นพื้นที่ว่างในชื่อไฟล์ให้ลองใช้ 'quote'> rmdir 'New Folder' <ตามด้วยการแยกโฟลเดอร์หรือใช้ตัวอักษร escape สำหรับอักขระที่ไม่สามารถใช้ได้
Ken Mollerup

2
เพียงแค่ทำrm -r lamppจะทำ
John Strood

คำตอบ:


876

ใช้คำสั่งด้านล่าง:

rm -rf lampp

มันจะลบไฟล์และโฟลเดอร์ทั้งหมดที่มีอยู่ในlamppไดเรกทอรี

ในกรณีที่ผู้ใช้ไม่มีสิทธิ์ในการลบโฟลเดอร์:

เพิ่มsudoที่จุดเริ่มต้นของคำสั่ง:

sudo rm -rf folderName

มิฉะนั้นsudoคุณจะไม่ได้รับอนุญาตคืนถูกปฏิเสธ และเป็นแนวปฏิบัติที่ดีที่จะไม่พยายามใช้-fในขณะที่ลบไดเรกทอรี:

sudo rm -r folderName

หมายเหตุ: นี่ถือว่าคุณอยู่ในระดับเดียวกับโฟลเดอร์ที่คุณต้องการลบในเทอร์มินัลแล้วหากไม่ใช่:

sudo rm -r /path/to/folderName

FYI: คุณสามารถใช้ตัวอักษร-f, -r, -v:

  • -f = เพื่อเพิกเฉยต่อไฟล์ที่ไม่มีอยู่ไม่ต้องพรอมต์
  • -r = เพื่อลบไดเรกทอรีและเนื้อหาซ้ำ ๆ
  • -v = เพื่ออธิบายสิ่งที่กำลังทำ

69
ในความเห็นต่ำต้อยของฉันมันเป็นวิธีที่ดีที่จะไม่เพิ่ม "f" ในการพยายามครั้งแรก วัตถุประสงค์คือเพื่อเพิกเฉยต่อคำเตือนที่อาจมีความสำคัญโดยเฉพาะอย่างยิ่งหากคุณทำโดยไม่ตั้งใจในไดเรกทอรีที่ไม่ถูกต้อง ในความคิดของฉันมันเป็นเรื่องดีที่จะลองโดยไม่ต้อง "f" ก่อนจากนั้นก็ต่อเมื่อคุณได้รับคำเตือนจำนวนมากและคุณแน่ใจว่ามันเป็นเรื่องดีที่จะเพิกเฉยพวกเขาทั้งหมด Ctrl + C หมดแล้วทำซ้ำคำสั่งด้วย " F"
thomasrutter

@BKSpurgeon ไม่เว้นแต่คุณตั้งใจพิมพ์--no-preserve-rootเกินไป
muru

@thomasrutter ... เห็นด้วย ไฟล์ "xxx" owner: root และ group: rootสามารถลบได้ด้วย-f switch; และไม่มีsudo นี่คือข้อความที่ไม่มี-f : " rm: ลบไฟล์ปกติที่มีการป้องกันการเขียน '/home/william/.cache/netbeans/v08.01/tmp/xxx'? _" _Tread เบา ๆ
จะถึง

95
rm -R lampp

อย่างไรก็ตามคุณต้องระวังคำสั่งแบบเรียกซ้ำเช่นนี้เนื่องจากเป็นการง่ายที่จะลบมากกว่าที่คุณตั้งใจ

มันเป็นความคิดที่ดีที่จะตรวจสอบว่าคุณอยู่ในไดเรกทอรีใดและตรวจสอบว่าคุณพิมพ์คำสั่งถูกต้องก่อนที่จะกด Enter

รุ่นที่ปลอดภัยยิ่งขึ้น

rm -R -i lampp

การเพิ่ม-iทำให้มันปลอดภัยขึ้นเล็กน้อยเพราะจะให้คุณลบทุกครั้ง อย่างไรก็ตามหากคุณลบไฟล์จำนวนมากสิ่งนี้จะไม่สามารถนำไปใช้ได้จริง ถึงกระนั้นคุณสามารถลองสิ่งนี้ก่อน

หมายเหตุเกี่ยวกับ -f ตัวเลือก:

หลายคนแนะนำให้ใช้-f(รวมเข้ากับ-Rfหรือ-rf) โดยอ้างว่าเป็นการกำจัดข้อความแจ้งที่น่ารำคาญ อย่างไรก็ตามในกรณีปกติที่คุณไม่จำเป็นต้องใช้และใช้มันยับยั้งปัญหาบางอย่างที่คุณอาจไม่ต้องการทราบเกี่ยวกับ เมื่อคุณใช้งานคุณจะไม่ได้รับการเตือนหากข้อโต้แย้งของคุณระบุไดเรกทอรีหรือไฟล์ที่ไม่มีอยู่: rm ​​จะไม่สามารถลบสิ่งใด ๆ ได้อย่างเงียบ ๆ ตามกฎทั่วไปให้ลองก่อนโดยไม่มี-f: หากมีปัญหากับข้อโต้แย้งของคุณคุณจะสังเกตเห็น หากคุณเริ่มได้รับพรอมต์มากเกินไปเกี่ยวกับไฟล์ที่ไม่มีการเข้าถึงเพื่อเขียนคุณสามารถลองใช้ได้-f. หรือเรียกใช้คำสั่งจากผู้ใช้ (หรือผู้ใช้ superuser โดยใช้ sudo) ที่มีสิทธิ์แบบเต็มไปยังไฟล์และไดเรกทอรีที่คุณลบเพื่อป้องกันการแจ้งเหล่านี้ในสถานที่แรก


4
หมายเหตุ: -rสามารถใช้ตัวพิมพ์เล็กได้เช่นกันและมีผลเหมือนกันที่นี่ ฉันมักจะใช้ตัวพิมพ์ใหญ่เพียง-Rเพราะมันสอดคล้องกับคำสั่งอื่น ๆ ที่ฉันใช้เช่นgrepและchmodบางแห่งเท่านั้นที่สนับสนุนรูปแบบตัวพิมพ์ใหญ่
thomasrutter

อันนี้ใช้ได้กับฉันโดยใช้ adb (android debug bridge) บน Android พยายาม rm -rf แต่มันไม่ทำงาน ต้องใช้ rm -R ขอบคุณ
raddevus

นี่เป็นทางออกที่ดีโดยเฉพาะอย่างยิ่งหากไม่มีประสบการณ์ในการใช้เทอร์มินัล Bash คำสั่งสามารถย่อให้เล็กลงrm -ir FOLDERได้
AlainD

24

มีหลายวิธีในการลบไดเรกทอรีผ่านโหมด CLI ขึ้นอยู่กับวิธีที่คุณพอใจ

rm -rvf /path/to/directory  
  • -r = ลบไดเรกทอรีและเนื้อหาซ้ำ ๆ
  • -v = อธิบายสิ่งที่กำลังทำ
  • -f = เพิกเฉยไฟล์ที่ไม่มีอยู่ไม่ต้องพรอมต์

หากคุณยังใหม่ใน Linux ให้ใช้ man pages of command ( man rm) เพื่อดูตัวเลือกเพิ่มเติมและความแม่นยำมากขึ้น


-2

วันนี้ฉันมีปัญหาบางอย่าง แต่ฉันเอาชนะมันด้วย sudo

Caveat: ขอให้แน่ใจว่าคุณต้องการลบทั้งหมดก่อนที่จะใช้คำสั่งด้านล่าง

$ sudo rm -R [Directory name]

ฉันทำสิ่งนี้ได้สำเร็จในวันนี้และลบไดเรกทอรีที่ไม่ว่างเปล่าจำนวนมากที่ฉันยืนยันว่าฉันไม่ต้องการ / ต้องการ

ฉันใช้ 14.04 LTS


4
"SUDO" ไม่ใช่คำสั่ง - "sudo" คือ อย่างไรก็ตามคุณไม่ได้ใช้ sudo เพื่อลบไดเรกทอรีที่ไม่ว่างเปล่าคุณใช้มันเพื่อลบไฟล์ที่คุณไม่ได้เป็นเจ้าของ การทำเช่นนี้เป็นเรื่องที่อันตรายและไม่ฉลาดมากเพราะคุณไม่ควรลบไฟล์ที่คุณไม่ได้เป็นเจ้าของ
Marty ผัด

-3

โดยส่วนตัวแล้วฉันต้องการลบไดเรกทอรีที่มีไฟล์ป้องกันการเขียน / s (.git และไดเรกทอรีย่อย) และในที่สุดฉันก็รู้ว่าฉันต้องกลายเป็นผู้ใช้ขั้นสูงเพื่อที่จะลบไฟล์เหล่านี้ได้สำเร็จ นี่คือสิ่งที่ฉันทำ:

#became super user
sudo su -

#deleted contents of, and then the directory, harvey_snake/
rm -R harvey_snake/

4
ฉันไม่คิดว่าคุณต้องการsudo suที่นี่ เพียงแค่คำนำหน้าคำสั่งด้วยrm sudoเพื่อความปลอดภัยเป็นวิธีปฏิบัติที่ดี (ตามผู้สนับสนุนของ sudo) ไม่ให้อยู่ในสถานะพร้อมท์รูทเมื่อไม่จำเป็น
thomasrutter

2
sudo rm -rนอกจากนี้ยังให้มากมากว่าไดเรกทอรีที่คุณอยู่ในถ้าคุณ
Tony Martin

คุณสามารถสร้างคำสั่งรูทสัมพันธ์ ( /directory_name) เพื่อให้มีข้อสงสัยเกี่ยวกับไดเรกทอรีที่คุณลบ
Yaakov Ainspan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.