Rmdir เป็นคำสั่งบนบรรทัดคำสั่ง (command-line utility) ใน Linux และ Windows ใช้สำหรับลบไดเรกทอรีที่ ว่างเปล่า (non-empty directories ตรงข้ามกันนะ - rmdir ลบได้เฉพาะไดเรกทอรีว่าง) เป็นยูทิลิตี้ที่มีประโยชน์กว่า rm ปกติ เพราะ rm สามารถลบไดเรกทอรีได้แม้จะไม่ว่าง ช่วยป้องกันการลบไดเรกทอรีที่มีไฟล์อยู่ภายในโดยไม่ได้ตั้งใจ
ข้อผิดพลาด 'rmdir: directory not empty' เกิดขึ้นเมื่อคุณรันคำสั่ง rmdir บน ไดเรกทอรีที่ไม่ว่างเปล่า หมายถึงมีไฟล์หรือไดเรกทอรีย่อยอยู่ภายใน นี่คือพฤติกรรมปกติของ rmdir จะแสดงข้อผิดพลาดเมื่อรันบนไดเรกทอรีที่ไม่ว่างใน Linux หรือ OS อื่นๆ ที่มี rmdir
วิธีแก้ 'rmdir: directory not empty' ใน Linux
มีวิธีแก้ไขง่ายๆ หลายวิธี ลองทีละอย่าง นอกจากการรันคำสั่งบนไดเรกทอรีที่ไม่ว่าง ข้อผิดพลาดนี้อาจเกิดจากปัญหา symlink หรือสาเหตุอื่นๆ
1. ใช้พารามิเตอร์ “rm -rf”
คุณสามารถใช้คำสั่ง 'rm' ใน Linux เพื่อลบไดเรกทอรีที่ไม่ว่างได้ หากเจอข้อผิดพลาดนี้ ก่อนอื่นตรวจสอบว่าไดเรกทอรีจริงๆ ไม่ว่างด้วยคำสั่ง 'ls -a' บนไดเรกทอรีที่ต้องการลบ ถ้าเห็นไฟล์ (ซึ่ง ls -a จะแสดง) ให้ใช้คำสั่ง 'rm -rf' เพื่อลบไดเรกทอรี
ตัวอย่าง:
เราต้องการลบไดเรกทอรีชื่อ abcd
เรารัน 'ls -a' ตรวจสอบ พบว่ามีไฟล์อยู่ภายใน
ถ้ารัน rmdir จะได้ข้อผิดพลาดเพราะไม่ว่าง
วิธีแก้ง่ายที่สุดคือใช้ rm -rf:
rm -rf abcd
ตัวเลือก -r หมายถึง recursive คือลบทุกอย่างภายในไดเรกทอรีแบบเรียกซ้ำ (ไดเรกทอรีย่อยก็จะถูกลบด้วย)
ตัวเลือก -f หมายถึง force delete คือบังคับลบแม้จะไม่ว่าง
ถ้าต้องการลบไดเรกทอรีที่ user ของคุณไม่มี write permissions ให้ใช้:
sudo rm -rf
การใช้ sudo กับ rm แนะนำเฉพาะเมื่อคุณรู้ว่ากำลังทำอะไร และไดเรกทอรีที่จะลบไม่ใช่ system directory เพราะ root user สามารถลบ system directories ได้เช่นกัน
2. ใช้ File Manager ลบไดเรกทอรี:
ในบางกรณี ผู้ใช้รายงานว่าไม่สามารถลบไฟล์ด้วย rm utility ได้แม้ใช้ flag -f และ -r แต่ลบได้ผ่าน File Manager คุณลองทำดูได้
ใน Ubuntu และหลายดิสโทร Linux File Manager ติดตั้งมาพร้อม คุณสามารถใช้ลบไดเรกทอรีหรือโฟลเดอร์ได้ หากใช้ Ubuntu สามารถใช้ Nautilus File Manager ที่มาพร้อม (Nautilus เพียงตัวอย่างอย่างใดอย่างหนึ่ง)
แก้ rmdir: directory not empty ใน Windows:
ข้อผิดพลาดนี้อาจเกิดใน Windows เมื่อพยายามลบไดเรกทอรีผ่าน Command Prompt หรือ PowerShell วิธีแก้:
- ใช้วิธี rm -rf ตามที่อธิบายใน Linux ด้านบน
- ตรวจสอบว่าไดเรกทอรีที่จะลบไม่ถูก โปรแกรมอื่นเข้าถึงอยู่ ถ้ามี ใช้ Task Manager ปิดโปรแกรมนั้น
จากนั้นลองลบไดเรกทอรีอีกครั้งใน cmd หรือ powershell ด้วย rmdir หรือ rm -rf
ABOUT THE AUTHOR

Kevin Arrows
Kevin Arrows เป็นผู้เชี่ยวชาญด้านเทคโนโลยีที่มีประสบการณ์มากกว่า 10 ปี ได้รับการรับรอง Microsoft Certified Technology Specialist (MCTS) มีความหลงใหลในการอัปเดตเทคโนโลยีล่าสุด เขียนบทความเกี่ยวกับหัวข้อเทคโนโลยีกว้างขวาง แสดงความเชี่ยวชาญในด้านการพัฒนาซอฟต์แวร์ ความปลอดภัยไซเบอร์ และ Cloud Computing ได้รับการยอมรับและเคารพจากเพื่อนร่วมงาน สามารถอธิบายแนวคิดทางเทคนิคที่ซับซ้อนได้อย่างชัดเจนและกระชับ