"Kann 'some_directory' nicht entfernen: Verzeichnis nicht leer"

27

Ich habe versucht, ein Verzeichnis zu löschen, aber

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

Aber die Auflistung seines Inhalts gibt keinen zurück

$ ls DE.aspx_files
$

Hinzugefügt: Eigentlich

$ 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

Wenn ich es versuche, rm .fuse_hidden0001d4bf00000006wird es gelöscht, aber ein anderes neu .fuse_hidden0001d4bf00000007erstellt.

Ich frage mich also, was passiert ist und wie das Problem behoben werden kann.

Hinweis: Es handelt sich um eine neu gekaufte externe tragbare Festplatte, auf die ich nur einige Dateien mithilfe eines Datenwiederherstellungsprogramms kopiere.

Betriebssystem: Ubuntu 12.04

Vielen Dank!

Tim
quelle
3
Sie müssen herausfinden, was ein FUSE-Dateisystem dort mounten. Versuchen mount | fgrep fuseSie, es zu finden und fusermount -u <mountpoint>die Bereitstellung aufzuheben, bevor Sie versuchen, Ihr Verzeichnis zu löschen.
CodeGnome
Wie löscht man die Datei ohne Mounten?
Stephen Boston

Antworten:

16

Versteckte Dateien

Möglicherweise haben Sie Dateien versteckt. Sie können sie mit finden ls -la, um sicherzustellen, dass Sie damit einverstanden sind, sie zuerst wirklich zu löschen. Anschließend können Sie die Dateien vor dem Ausführen rm -roder rmdirnach Bedarf löschen .

Erzwingen des rekursiven Löschens

Sie können auch einfach rm -rfdas rekursive Löschen erzwingen, selbst wenn das Zielverzeichnis Dateien enthält. Es gelten alle üblichen Warnungen, aber der Job wird ausgeführt, unabhängig davon, was in Ihrem Verzeichnis enthalten ist - vorausgesetzt, Sie haben die Berechtigung, die Dateien und Verzeichnisse zu löschen.

CodeGnome
quelle
1
Sie können auch ausführen find DE.aspx_files -exec ls -la {} \;, um versteckte Dateien oder Dateien mit Sonderzeichen zu identifizieren.
Tim Kennedy
Danke, ich habe die versteckte Datei des Täters identifiziert, die gelöscht werden kann, aber ein neues Geschwister generiert wird. Bitte beachten Sie meinen zusätzlichen Teil. Das Erzwingen des Löschens funktioniert auch nicht, weil "Verzeichnis nicht leer" ist.
Tim
56

Dateien des Formulars .fuse_hidden*werden von FUSE- Dateisystemen erstellt, wenn eine Datei gelöscht wird, aber noch irgendwo verwendet wird und noch einen Verzeichniseintrag haben muss. Dies ähnelt .nfs*Dateien in Verzeichnissen, die über NFS exportiert wurden .

Führen df -T .Sie den Befehl aus, um den Typ des Dateisystems anzuzeigen, das im aktuellen Verzeichnis und dessen Einhängepunkt eingebunden ist. Bei einer externen Festplatte handelt es sich wahrscheinlich um ein NTFS-Dateisystem, das über den auf FUSE basierenden NTFS-3G- Treiber bereitgestellt wird.

Der Name ist ein falscher Name, den der Dateisystemtreiber für eine gelöschte Datei erfindet. Sie können die Datei nicht löschen (oder, wenn Sie die Datei erstellen, wird sie erneut unter einem anderen Namen angezeigt). Sie können das Verzeichnis auch nicht löschen, da es nicht leer ist. Sie müssen herausfinden, was diese Datei verwendet. Die wahrscheinlichste Ursache für die Verwendung ist, dass sie von einer Anwendung geöffnet wird. Führen Sie aus, lsof /media/mount-pointwo /media/mount-pointsich der Mount-Punkt des Dateisystems befindet, und suchen Sie in diesem Verzeichnis nach einer geöffneten Datei.

Gilles 'SO - hör auf böse zu sein'
quelle
6
DIESE Antwort ist die, die das Problem tatsächlich löst
Martin Erhardt
Danke, es funktioniert. Ich habe diese Antwort verwendet und eine Menge Dinge gesehen, die meine Ordner benutzt haben. Wurde neu gestartet und dann versucht, dieselbe Liste erneut anzuzeigen - sie war leer. Und dann verlief die Löschung reibungslos.
Sevastyan
12

Für externe Festplatten könnte dieses Problem gelöst werden durch:

  • Klicken Sie mit der rechten Maustaste auf den Ordner und wählen Sie Move to Trash
  • Den Papierkorb leeren

Es hat bei mir funktioniert, auch wenn rm -rfes nicht funktioniert hat.

DileepNimantha
quelle
1
Ja das funktioniert Warum?! Die Dateien befinden sich dann jedoch im Papierkorb und sind genauso problematisch.
Stephen Boston
-1

Achten Sie auf dem Mac auch auf * .localized-Dateien, die selbst für 'ls -la', 'find' und ihre Art auf einem FUSE-Dateisystem unsichtbar werden können. [Dies wurde mithilfe eines von ConnectedData Transporter erstellten FUSE-Dateisystems auf einem MacBook Pro festgestellt.]

Dave
quelle
-1

Dies kann passieren, wenn Sie eine Datei auch in einem Torrent-Client einlesen. Stellen Sie einfach sicher, dass Sie den Torrent-Client ausschalten oder den Seeding-Torrent entfernen.

Daniel Reid
quelle