Warum wird "Verzeichnis nicht leer" angezeigt, wenn ich versuche, ein leeres Verzeichnis zu entfernen?


37

Ich habe dieses leere Verzeichnis, erhalte jedoch weiterhin die folgende Fehlermeldung:

Cannot remove test: Directory not empty

Ich weiß, dass diese Frage oft gestellt wurde, aber keiner von ihnen hat geholfen.

Ich habe versucht ls -la, sicherzustellen, dass keine versteckten Dateien vorhanden sind, und es scheint keine zu geben: Bildbeschreibung hier eingeben

Ich habe versucht , sudo rmdir testals auch sudo rm -rf test, und ich weiß einfach nicht , was falsch ist.

Ich habe gelesen, es könnte ein Problem mit dem Dateisystem sein, aber ich habe keine Ahnung, wie ich das beheben würde.


Versuchensudo fsck /
ike

2
Ist es ein normales Verzeichnis oder ein Mount-Punkt. Wenn dies ein Bereitstellungspunkt ist, sollte er vor dem Löschen deaktiviert werden. Wenn es sich um ein normales Verzeichnis handelt, kann dieses Problem unter Umständen durch einige offene Handles verursacht werden. Starten Sie Ihren Computer einmal neu und versuchen Sie, ihn zu löschen.
Vembutech

@rbrick Ist testder Name Ihres Anmeldebenutzers? Was ist die Ausgabe von echo $USER? und was echo $HOME?
29.

1
Ich bin verwirrt, warum hat der Benutzer keine Ausführungsberechtigungen für das Verzeichnis, die Gruppe jedoch?
Julian Stirling

Antworten:


36

Ich hatte das gleiche Problem auf einer externen Festplatte, ich habe so viele Möglichkeiten mit der Befehlszeile ausprobiert, aber ich bin jedes Mal gescheitert. Das hat bei mir funktioniert:

  1. Klicken Sie mit der rechten Maustaste auf den Ordner
  2. Ab in den Müll
  3. Leerer Müll

Ja, es ist albern, aber es hat bei mir funktioniert (ich weiß nicht wirklich wie und warum, aber der verdammte Ordner existiert nicht mehr)


Ich habe das gleiche Problem und Ihre Antwort funktioniert. Ich bin mir nicht ganz sicher, was passiert ist und warum "-rf" einen nicht leeren Ordner nicht entfernen konnte.
Artm

3
Was ist gerade hier passiert? Warum hat es funktioniert?
Sahil Arora

Was ist passiert? Ehrlich gesagt, ich weiß es nicht. Möglicherweise ist die Datei des Ordners aus irgendeinem Grund beschädigt: Ein Flag wie "is-empty" oder der Dateizähler wie "how-many-file-inside" wurde auf einen falschen Wert gesetzt. Manchmal können solche Fehler durch Beschädigungen der Festplatte verursacht werden. Warum hat es funktioniert? Ich weiß nicht, wie Befehle implementiert werden (denken Sie an C), aber ich schätze, sie überprüfen diese Flags und Zähler, bevor sie aktiv werden (ich meine, wenn der Dateizähler> 0 ist, dann "Fehler: Verzeichnis nicht leer" und brechen ab), während Sie den leeren Papierkorb entfernen Sie direkt den Ordner und alle seine Dateien und Unterordner ohne jede Prüfung.
Marco Ottina

Möglicherweise erfordert das Löschen eines Ordners über die Befehlszeile einige Bedingungen, z. B. die Leere des Ordners (da durch das Entfernen des Ordnerknotens aus dem Dateisystem nur dieser einzelne Linkknoten entfernt wird und der Ordner leer sein muss, damit kein anderer Dateiknoten "vergessen" wird "durch das Dateisystem aufgrund des Verlusts der zwischenzeitlichen Verknüpfung mit ihnen, dargestellt durch den Ordner) .. und Löschen eines Ordners durch Rechtsklick -> Löschen oder Leeren des Papierkorbs entfernt den Ordner UND alle Dateien und Unterordner rekursiv, ohne Beachtung von Flags, Zähler und solche Sachen (also werden keine Kontrollen durchgeführt)
Marco Ottina

1
In meinem Fall befand sich das fragliche Unterverzeichnis in einem Ordner, der von meinem Mac für eine Linux-VM freigegeben wurde, und ich versuchte, den Ordner von der Linux-VM-Seite zu löschen. Es scheint, dass die Mac-Seite an einigen Ordnern festhielt. Das rm -rfvon der Mac-Seite aus zu tun hat funktioniert.
MindJuice

5

Ich habe Win 10 + Ubuntu Dual System installiert. Und beide Systeme teilen sich die Windows-Partitionen.

In letzter Zeit konnte ich auch keine leeren Ordner in diesen Partitionen unter Ubuntu löschen. Ich kann keine Lösung finden, um es unter Linux zu lösen.

Nachdem ich jedoch zu Windows gewechselt und ausgeführt habe

chkdsk

via cmdfür die Zieldiskette. Einige Fehler wurden ausgecheckt. und dann renne ich

chkdsk /F

Festplattenfehler zu beheben.

Nachdem es fertig ist, kann ich diese Ordner jetzt löschen.


2
Diese Methode funktioniert bei mir. Ich denke, es ist auch wichtig zu beachten, dass die freigegebenen Partitionen NTFS-formatiert sind und dass sie wahrscheinlich beschädigt sind.
Krismath

4

Sie können es durch Eingabe löschen sudo rm -rf {dir_name}. Das Verzeichnis ist möglicherweise schreibgeschützt. Ich hoffe der gegebene Befehl kann den Ordner löschen.


Ich bekomme Directory not emptysowieso. Es scheint seltsam, also habe ich meinen Bildschirm aufgezeichnet, um zu beweisen.
naXa

Dieser Befehl in der Antwort funktioniert auch, wenn das Verzeichnis Inhalt hat und auch mit Unterverzeichnissen.
Wolverine

glauben Sie mir nicht, schauen Sie einfach: D drive.google.com/open?id=1UEYVa4UT6df7xucrq-lO82xjk3afHHzA
naXa

Dieses seltsame Verhalten wurde durch Fehler in der NTFS-Partition verursacht. gelöst mit chkdsk /F.
naXa

4

Ich hatte das gleiche Problem nicht in der Lage, Verzeichnis zu entfernen, da es nicht leer ist.

Diese Abfolge von Operationen hat bei mir funktioniert.

  1. Zuerst von der Kommandozeile

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

Der obige Befehl hilft Ubuntu zu ignorieren Verzeichnis ist nicht leer.

  1. Dann gehen Sie einfach in den Ordner und Shift + Del. Das ist alles.

3

GUI-Lösung

  1. Verschieben oder Ausschneiden und Einfügen des Ordners in den Papierkorb
  2. den Papierkorb leeren

es ist vollbracht.

Befehlszeilenlösung

sudo mv folder_error/ .local/share/Trash

du kannst mit trash-cli löschen: trash-empty oder

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

1
Ich denke, die Kommandozeilenlösung hier ist eigentlich eine allgemeine Lösung. Verschieben Sie den leeren Ordner an einen anderen Speicherort und entfernen Sie ihn, sobald er verschoben wurde. Zum Beispiel so etwas mkdir a ; mv test a/ ; rm -rf a/test ; rm -rf a. Ein solcher Ansatz hat bei mir funktioniert (obwohl ich keine Ahnung habe, warum) und ich brauchte keinen Root-Zugriff.
Jake Fisher

2

Wenn das Verzeichnis Teil eines mit CIFS (aka Samba) gemounteten Dateisystems ist und eine Datei enthält, bei der es sich um eine unterbrochene symbolische Verknüpfung handelt, wird lsdiese Datei nicht erwähnt. (Ich beobachte diesen Fehler auf einem CIFS-Client mit 14.04.2 LTS und einem Server mit 12.04.5 LTS.)

Also das Verzeichnis nicht leer ist , aber (über CIFS) Sie haben keine Möglichkeit , das zu sehen. Die Datei kann nur von einem Befehl auf dem Dateiserver angezeigt und daher nur gelöscht werden, der dieses Dateisystem hostet.


2

Wenn Sie btrfs verwenden, handelt es sich möglicherweise um ein leeres Verzeichnis mit einer i_size ungleich Null. Sie können prüfen, ob dies der Fall ist bei:

stat -c %s test

Die i_size eines leeren Ordners in btrfs sollte Null sein. In meinem Fall habe ich 6160 mit bekommen ~/.config/chromium/Default.

Die vorgeschlagene Lösung besteht darin, die Bereitstellung des Dateisystems aufzuheben, btrfs checkdas Problem zu bestätigen, nach anderen problematischen Verzeichnissen btrfs check --repairzu suchen und abschließend eine Fehlerbehebung durchzuführen. Dieser Vorgang ist jedoch riskant. Daher empfiehlt es sich, zuerst Dateien zu sichern.

Quelle: Btrfs Problem FAQ


1

Ich hatte das gleiche Problem unter Ubuntu 16.04 und habe es behoben durch:

  1. den Papierkorb leeren
  2. Neustart

Das Öffnen und Schließen des Dateimanagers hat nichts gebracht - nur ein Neustart hat funktioniert.


0

versuche diesen Befehl:

sudo lsof | grep deleted 

Überprüfen Sie in der Liste, ob Ihr Verzeichnis noch verwendet wird. : D

Wenn ja, beenden Sie den Dienst und Sie können das Verzeichnis löschen.


Offensichtlich wird das Verzeichnis nicht in der Liste der geöffneten, gelöschten Dateideskriptoren angezeigt, wenn es nicht gelöscht werden kann. ; -]
David Foerster

0

Dieses Problem tritt auf, wenn diese Ordner oder Dateien nicht vollständig kopiert werden. Es ist ein Eingabe- / Ausgabefehler. Ich habe versucht, mit Shift+ Deloder durch Befehle zu löschen , aber diese haben nicht funktioniert. Ich habe versucht, mit der rechten Maustaste und "In den Papierkorb verschieben" und es hat funktioniert.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.