“ ไม่สามารถลบ 'some_directory': ไดเรกทอรีไม่ว่างเปล่า”


27

ฉันพยายามลบบางไดเรกทอรี แต่

$ rm DE.aspx_files -r
rm: cannot remove `DE.aspx_files': Directory not empty

แต่การแสดงรายการเนื้อหาไม่มีผลตอบแทน

$ ls DE.aspx_files
$

เพิ่ม:จริง

$ ls -la DE.aspx_files

total 4
drwx------ 1 ting ting 4096 Sep 14 20:48 .
drwx------ 1 ting ting    0 Sep 13 22:34 ..
-rw------- 1 ting ting    0 Sep 13 22:34 .fuse_hidden0001d4bf00000006

เมื่อฉันพยายามrm .fuse_hidden0001d4bf00000006มันจะถูกลบ แต่.fuse_hidden0001d4bf00000007สร้างขึ้นใหม่อีก

ดังนั้นฉันสงสัยว่าเกิดอะไรขึ้นและจะแก้ไขปัญหานี้ได้อย่างไร

หมายเหตุ: มันเป็น HDD ภายนอกแบบพกพาที่เพิ่งซื้อมาใหม่และฉันเพิ่งคัดลอกไฟล์บางไฟล์ไปยังมันโดยใช้โปรแกรมกู้คืนข้อมูล

ระบบปฏิบัติการ: Ubuntu 12.04

ขอบคุณ!


3
คุณต้องคิดออกว่ามีการติดตั้งระบบไฟล์ FUSE อยู่ที่นั่นหรือไม่ ลองmount | fgrep fuseค้นหาและfusermount -u <mountpoint>ยกเลิกการต่อเชื่อมก่อนพยายามลบไดเรกทอรีของคุณ
CodeGnome

คุณจะลบไฟล์โดยไม่ต้องติดตั้งได้อย่างไร
สตีเฟ่นบอสตัน

คำตอบ:


16

ไฟล์ที่ซ่อน

คุณอาจมีไฟล์ที่ซ่อนอยู่ คุณสามารถค้นหาพวกเขาด้วยls -laเพื่อให้แน่ใจว่าคุณโอเคกับการลบพวกเขาก่อน จากนั้นคุณสามารถลบไฟล์ก่อนเรียกใช้rm -rหรือrmdirตามที่ต้องการ

บังคับให้ลบแบบเรียกซ้ำ

คุณสามารถทำได้ด้วยrm -rfการบังคับให้ทำการลบซ้ำแม้ว่าไดเรกทอรีเป้าหมายจะมีไฟล์อยู่ คำเตือนตามปกติทั้งหมดจะมีผล แต่จะทำให้งานเสร็จไม่ว่าไดเรกทอรีของคุณจะมีอะไร - ตราบใดที่คุณมีสิทธิ์ในการลบไฟล์และไดเรกทอรีแน่นอน


1
นอกจากนี้คุณสามารถเรียกใช้find DE.aspx_files -exec ls -la {} \;เพื่อระบุไฟล์ที่ซ่อนหรือไฟล์ที่มีชื่อด้วยอักขระพิเศษ
ทิมเคนเนดี้

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

56

ไฟล์ของแบบฟอร์ม.fuse_hidden*ถูกสร้างขึ้นโดยระบบไฟล์FUSEเมื่อไฟล์ถูกลบ แต่ยังใช้งานอยู่ที่ใดที่หนึ่งและยังต้องมีรายการไดเรกทอรี นี้จะคล้ายกับ.nfs*ไฟล์ในไดเรกทอรีส่งออกมากกว่าNFS

เรียกใช้df -T .เพื่อดูประเภทของระบบไฟล์ที่ติดตั้งอยู่ในไดเรกทอรีปัจจุบันและจุดเชื่อมต่อ สำหรับฮาร์ดดิสก์ภายนอกโอกาสที่เป็นเช่นนี้คือระบบไฟล์ NTFS ที่ติดตั้งผ่านไดรเวอร์NTFS-3Gซึ่งเป็นฐานของ FUSE

ชื่อเป็นชื่อปลอมที่ไดรเวอร์ระบบไฟล์ประดิษฐ์สำหรับไฟล์ที่ถูกลบ คุณไม่สามารถลบไฟล์ได้ (หรือหากคุณสร้างไฟล์มันจะปรากฏขึ้นภายใต้ชื่ออื่น) คุณไม่สามารถลบไดเรกทอรีได้เนื่องจากไม่ว่างเปล่า คุณจะต้องค้นหาสิ่งที่ใช้ไฟล์นี้ สาเหตุที่มีแนวโน้มมากที่สุดของการใช้งานคือถ้ามันเปิดโดยบางแอปพลิเคชัน รันlsof /media/mount-pointโดยที่/media/mount-pointจุดเมาต์ระบบไฟล์คือและมองหาไฟล์ที่เปิดอยู่ในไดเร็กทอรีนั้น


6
คำตอบนี้เป็นคำตอบที่แก้ปัญหาได้จริง
Martin Erhardt

ขอบคุณมันใช้งานได้ ฉันใช้คำตอบนี้และเห็นสิ่งต่าง ๆ ที่ใช้โฟลเดอร์ของฉัน รีบูตแล้วลองดูรายการเดิมอีกครั้ง - ว่างเปล่า แล้วการลบก็เป็นไปอย่างราบรื่น
Sevastyan

12

สำหรับฮาร์ดดิสก์ภายนอกปัญหานี้สามารถแก้ไขได้โดย

  • คลิกขวาที่โฟลเดอร์และเลือก Move to Trash
  • เอาขยะไปทิ้ง

มันใช้งานได้สำหรับฉันแม้ว่าจะrm -rfไม่ได้ผลก็ตาม


1
ใช่มันใช้งานได้ดี ทำไม?! อย่างไรก็ตามไฟล์นั้นอยู่ในถังขยะและมีปัญหาเหมือนกัน
Stephen Boston

-1

หากบน mac ให้ระวังไฟล์ * .localized ซึ่งอาจมองไม่เห็นแม้กระทั่ง 'ls -la', 'find' และ ilk ของไฟล์เหล่านั้นในระบบไฟล์ FUSE [สิ่งนี้ค้นพบโดยใช้ระบบไฟล์ FUSE ที่ ConnectedData สร้างขึ้นโดย Transporter บน MacBook Pro]


-1

สิ่งนี้สามารถเกิดขึ้นได้เมื่อคุณทำการ seed ไฟล์ในไคลเอนต์ torrent เพียงให้แน่ใจว่าคุณปิดไคลเอนต์ฝนตกหนักหรือลบการเริ่มต้นฝนตกหนัก

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