เหตุใดฉันจึงได้รับ“ ไดเรกทอรีไม่ว่าง” เมื่อฉันพยายามลบไดเรกทอรีว่างเปล่า


37

ฉันมีไดเรกทอรีว่างเปล่า แต่ฉันได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้:

Cannot remove test: Directory not empty

ฉันรู้ว่าคำถามนี้ได้รับการถามหลายครั้ง แต่ไม่มีใครช่วย

ฉันพยายามls -laทำให้แน่ใจว่าไม่มีไฟล์ที่ซ่อนอยู่และดูเหมือนจะไม่มี: ป้อนคำอธิบายรูปภาพที่นี่

ฉันพยายามsudo rmdir testเช่นกันsudo rm -rf testและฉันก็ไม่รู้ว่ามีอะไรผิดปกติ

ฉันอ่านมันอาจเป็นปัญหากับระบบไฟล์ แต่ฉันไม่รู้ว่าจะแก้ไขได้อย่างไร


ลองsudo fsck /
ike

2
มันเป็นไดเรกทอรีปกติหรือจุดเชื่อมต่อ หากนี่คือจุดเมานต์ก็ควรจะถอนการติดตั้งก่อนที่จะลบ หากเป็นไดเรกทอรีปกติบางครั้งอาจมีจุดจับเปิดบางอันทำให้เกิดปัญหานี้ รีบูทเครื่องของคุณหนึ่งครั้งและลองลบมัน
vembutech

@rbrick testชื่อผู้ใช้ของคุณเข้าสู่ระบบหรือไม่? ผลลัพธ์ของecho $USERอะไร แล้วอะไรecho $HOMEล่ะ
αғsнιη

1
ฉันสับสนทำไมผู้ใช้ไม่มีสิทธิ์ดำเนินการในไดเรกทอรี แต่กลุ่มไม่มี
Julian Stirling

คำตอบ:


36

ฉันมีปัญหาเดียวกันบนฮาร์ดดิสก์ภายนอกฉันลองหลายวิธีโดยใช้บรรทัดคำสั่ง แต่ฉันล้มเหลวทุกครั้ง นั่นคือสิ่งที่ทำงานสำหรับฉัน:

  1. คลิกขวาที่โฟลเดอร์
  2. ย้ายไปที่ถังขยะ
  3. ถังขยะที่ว่างเปล่า

ใช่มันงี่เง่า แต่ใช้งานได้สำหรับฉัน (ฉันไม่รู้จริงๆว่าทำไมและอย่างไร แต่ไม่มีโฟลเดอร์ที่ถูกสาป)


ฉันได้รับปัญหาเดียวกันและคำตอบของคุณทำงาน ไม่แน่ใจว่าเกิดอะไรขึ้นกับโง่และทำไม "-rf" จึงไม่สามารถลบโฟลเดอร์ที่ไม่ว่างเปล่าได้
artm

3
เกิดอะไรขึ้นที่นี่ มันทำงานทำไม
Sahil Arora

เกิดอะไรขึ้น? สุจริตฉันไม่รู้ อาจไฟล์ของโฟลเดอร์เสียหายเนื่องจากสาเหตุบางประการเช่นค่าสถานะเช่น "ว่างเปล่า" หรือตัวนับไฟล์เช่น "จำนวนไฟล์ภายใน" ได้รับการตั้งค่าเป็นค่าที่ผิดพลาด บางครั้งข้อผิดพลาดเช่นนี้อาจเกิดจากความเสียหายในฮาร์ดดิสก์ มันทำงานทำไม ฉันไม่ทราบวิธีการใช้งานคำสั่ง (คิดเกี่ยวกับ C) แต่ฉันเดาว่าพวกเขาตรวจสอบการตั้งค่าสถานะและตัวนับเหล่านั้นก่อนที่จะทำหน้าที่ (ฉันหมายถึงถ้าตัวนับไฟล์> 0 แล้ว "ข้อผิดพลาด: ไดเรกทอรีไม่ว่าง" และยกเลิก) ถังขยะโดยตรงลบโฟลเดอร์และไฟล์ทั้งหมดและโฟลเดอร์ย่อยโดยไม่ต้องตรวจสอบใด ๆ
Marco Ottina

บางทีการลบโฟลเดอร์ผ่านบรรทัดคำสั่งจำเป็นต้องมีเงื่อนไขบางอย่างเช่นความว่างเปล่าของโฟลเดอร์ (เนื่องจากการลบโหนดของโฟลเดอร์ออกจากระบบไฟล์จะลบเฉพาะโหนดเดี่ยวนั้นและต้องการให้โฟลเดอร์ว่างเปล่าดังนั้นจึงไม่มีโหนดไฟล์อื่น "ลืม "ผ่านระบบไฟล์เนื่องจากสูญเสียลิงก์กลางไปยังไฟล์เหล่านั้นซึ่งแทนด้วยโฟลเดอร์) .. และการลบโฟลเดอร์ด้วยการคลิกขวา -> ลบหรือล้างถังขยะจะลบโฟลเดอร์และไฟล์และโฟลเดอร์ย่อยทั้งหมดซ้ำไม่สนใจแฟลก เคาน์เตอร์และสิ่งของต่างๆเช่นนั้น (ดังนั้นไม่มีการตรวจสอบใด ๆ )
Marco Ottina

1
ในกรณีของฉันไดเรกทอรีย่อยที่เป็นปัญหาเกิดขึ้นอยู่ในโฟลเดอร์ที่แชร์จาก Mac ของฉันไปยัง linux VM และฉันพยายามลบโฟลเดอร์จากด้าน Linux linux ดูเหมือนว่าฝั่ง Mac ถืออยู่ในบางโฟลเดอร์ การทำงานrm -rfจากด้าน Mac ทำงาน
MindJuice

5

ฉันได้รับรางวัล 10 + Ubuntu ระบบ Dual ติดตั้ง และทั้งสองระบบใช้การแบ่งพาร์ทิชันของ windows

เมื่อเร็ว ๆ นี้ฉันยังพบว่าไม่สามารถลบโฟลเดอร์ว่างในพาร์ติชั่นเหล่านั้นในอูบุนตูได้ ฉันไม่สามารถหาวิธีแก้ปัญหาภายใต้ลินุกซ์

อย่างไรก็ตามหลังจากที่ฉันสลับไปใช้ windows และเรียกใช้

chkdsk

ผ่านcmdสำหรับดิสก์เป้าหมาย ตรวจสอบข้อผิดพลาดบางอย่าง จากนั้นฉันก็วิ่ง

chkdsk /F

เพื่อแก้ไขข้อผิดพลาดของดิสก์

หลังจากเสร็จสิ้นฉันสามารถลบโฟลเดอร์เหล่านั้นได้ทันที


2
วิธีนี้ใช้ได้ผลสำหรับฉัน ฉันคิดว่ามันเป็นสิ่งสำคัญที่จะต้องทราบว่าพาร์ทิชันที่ใช้ร่วมกันเป็นรูปแบบ NTFS และอาจเสียหาย
krismath

4

sudo rm -rf {dir_name}คุณสามารถลบได้โดยการพิมพ์ ไดเรกทอรีอาจถูกตั้งค่าเป็นสิทธิ์แบบอ่านอย่างเดียว ฉันหวังว่าคำสั่งที่กำหนดสามารถลบโฟลเดอร์ได้


ฉันDirectory not emptyยังไง ดูเหมือนว่าแปลกดังนั้นฉันบันทึกหน้าจอของฉันเพื่อพิสูจน์
naXa

คำสั่งนั้นในคำตอบใช้งานได้แม้ว่าไดเรกทอรีมีเนื้อหาและมีไดเรกทอรีย่อย
Wolverine

ไม่เชื่อฉันแค่ดู: D drive.google.com/open?id=1UEYVa4UT6df7xucrq-lO82xjk3afHHzA
naXa

พฤติกรรมแปลก ๆ นี้เกิดจากข้อผิดพลาดในพาร์ติชัน NTFS chkdsk /Fแก้ไขได้ด้วย
naXa

4

ฉันมีปัญหาแบบเดียวกันไม่สามารถลบไดเรกทอรีได้เนื่องจากไม่ว่างเปล่า

การดำเนินการตามลำดับนี้เหมาะกับฉัน

  1. จากบรรทัดคำสั่งก่อน

    sudo rmdir  --ignore-fail-on-non-empty folder-name-to-be-deleted
    

คำสั่งดังกล่าวช่วยให้ ubuntu ละเว้นไดเรกทอรีไม่ว่างเปล่า

  1. จากนั้นไปที่โฟลเดอร์และ Shift + Del นั่นคือทั้งหมด

3

โซลูชัน GUI

  1. ย้ายหรือตัดและวางโฟลเดอร์ไปที่โฟลเดอร์ถังขยะ
  2. เอาขยะไปทิ้ง

มันทำ

โซลูชันบรรทัดคำสั่ง

sudo mv folder_error/ .local/share/Trash

คุณสามารถล้างข้อมูลด้วย trash-cli: trash-empty หรือ

sudo rm -fr ~/.local/share/Trash/*

1
ฉันคิดว่าโซลูชันบรรทัดคำสั่งที่นี่เป็นโซลูชันทั่วไป ย้ายโฟลเดอร์ว่างไปยังตำแหน่งอื่นและลบออกเมื่อย้ายแล้ว mkdir a ; mv test a/ ; rm -rf a/test ; rm -rf aเช่นบางอย่างเช่นนี้ วิธีการเช่นนี้ได้ผลสำหรับฉัน (แม้ว่าฉันจะไม่รู้ว่าทำไมมันถึงเป็นเช่นนั้น) และฉันไม่ต้องการการเข้าถึงรูท
Jake Fisher

2

หากไดเรกทอรีนั้นเป็นส่วนหนึ่งของระบบไฟล์ที่ติดตั้งด้วย CIFS (aka samba) และมันมีไฟล์ที่เป็นลิงค์สัญลักษณ์ที่เสียแล้วก็lsไม่สามารถพูดถึงไฟล์นั้นได้ (ฉันสังเกตเห็นข้อผิดพลาดนี้บนไคลเอนต์ CIFS ที่รัน 14.04.2 LTS และเซิร์ฟเวอร์ที่รัน 12.04.5 LTS)

ดังนั้นไดเรกทอรีไม่ว่างเปล่าแต่ (มากกว่า CIFS) คุณไม่มีทางดู ไฟล์สามารถดูได้เท่านั้นและสามารถลบได้โดยคำสั่งที่รันบน fileserver ที่โฮสต์ระบบไฟล์นั้น


2

หากคุณใช้ btrfs อาจเป็นไดเร็กตอรี่ว่างที่ไม่มี i_size คุณสามารถตรวจสอบว่าเป็นกรณีนี้ด้วย:

stat -c %s test

i_size ของโฟลเดอร์ว่างใน btrfs ควรเป็นศูนย์ ในกรณีของฉันฉันได้ 6160 ~/.config/chromium/Defaultด้วย

วิธีแก้ปัญหาที่แนะนำคือการถอนติดตั้งระบบไฟล์เรียกใช้btrfs checkเพื่อยืนยันปัญหาและตรวจสอบไดเรกทอรีที่มีปัญหาอื่น ๆ และสุดท้ายbtrfs check --repairจะเรียกใช้เพื่อแก้ไข อย่างไรก็ตามการดำเนินการนี้มีความเสี่ยงดังนั้นจึงเป็นความคิดที่ดีสำหรับการสำรองไฟล์ก่อน

ที่มา: Btrfs ปัญหาคำถามที่พบบ่อย


1

ฉันมีปัญหาเดียวกันบน Ubuntu 16.04 และฉันแก้ไขโดย:

  1. ล้างโฟลเดอร์ถังขยะ
  2. บูตเครื่องใหม่

การเปิดและปิดตัวจัดการไฟล์ไม่ดี - การรีบูตเท่านั้นทำงานได้


0

ลองคำสั่งนี้:

sudo lsof | grep deleted 

ตรวจสอบในรายการว่าไดเรกทอรีของคุณยังใช้งานอยู่หรือไม่ : D

ถ้าเป็นเช่นนั้นหยุดบริการและคุณจะสามารถลบไดเรกทอรี


เห็นได้ชัดว่าไดเรกทอรีจะไม่ปรากฏในรายการตัวอธิบายไฟล์ที่เปิดและลบหากไม่สามารถลบได้ ; -]
David Foerster

0

ปัญหานี้จะปรากฏขึ้นเมื่อโฟลเดอร์หรือไฟล์เหล่านั้นไม่ได้คัดลอกอย่างสมบูรณ์ มันเป็นข้อผิดพลาดของอินพุต / เอาต์พุต ฉันพยายามลบด้วยคำสั่งShift+ Delหรือผ่าน แต่สิ่งเหล่านี้ใช้ไม่ได้ ฉันลองคลิกขวาและ "ย้ายไปที่ถังขยะ" และใช้งานได้

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