it-swarm.com.de

Warum kann ich einen Ordner nicht löschen?

Could not remove the folder [Folder name].

Show more details
 Error removing file: Directory not empty

Cancel-Skip All-Skip

Ich habe versucht, diese Ordner vom Terminal zu löschen mit:

rm -r
14
tepheno

Haben Sie versucht, Sudo rm -r. Welche Art von Dateien gibt es? Sie können auch zuerst alle Dateien und dann den Ordner löschen. Es ist zusätzliche Arbeit, aber manchmal lohnt es sich, die Arbeit zu erledigen.

Sudo steht für Superuser-Aktionen.

9
wlraider70

Ich hatte dieses Problem mit einem Ordner auf einem BTRFS-Dateisystem. Das Überprüfen von Mountpunkten und lsof ist normal. In meinem Fall handelte es sich um eine Korruption, die durch einen alten Fehler verursacht wurde, der behoben wurde:

Die normalen Dinge, auf die Sie achten sollten:

  • lsof + D <path> - Dies wird l i s t all o pen f iles. Sie können keinen Ordner löschen, der geöffnete Dateien enthält, obwohl dies normalerweise einen etwas anderen Fehler zur Folge hätte: "Gerät oder Ressource belegt". Beachten Sie, dass wenn Sie "+ D <Pfad>" weglassen, lsof eine Liste aller Ordner auf allen Dateisystemen anzeigt - was Zeit verschwendet. ;)
  • mount : Zeigt die aktuell gemounteten Dateisysteme an. Sie können einen aktiv gemounteten Mountpoint oder dessen übergeordnete Ordner nicht löschen.
  • btrfs-Unterliste <Pfad> : Ähnlich wie bei einem Mount-Punkt können Sie ein btrfs-Subvolume nur mit dem btrfs-spezifischen Befehl löschen: btrfs Subvolume löschen <Pfad> .

Problemumgehung für Korruption

Im Falle einer Beschädigung, die nicht einfach behoben werden kann, besteht die grundlegende Problemumgehung darin, das Dateisystem zu sichern, zu formatieren und dann wiederherzustellen (wobei die fehlerhaften Daten weggelassen werden). Abhängig davon, wie viele Daten Sie im Dateisystem haben, kann dies eine lästige Pflicht sein. : - /

In meinem Fall befand sich der Problemordner in einem Subvolume, sodass ich das oben beschriebene Verfahren durchführen konnte, indem ich anstelle des gesamten Dateisystems nur das Subvolume löschte. Ich habe meine Daten gesichert und das Subvolume gelöscht: btrfs sub del <subvolume-path> . Ich konnte dann in einem neuen Subvolume wiederherstellen und den Problemordner weglassen.

Beschädigung von i_size

Die Ursache in meinem Fall war eine Beschädigung von i_size , wo es nicht Null war. Btrfs verwendet die i_size, um festzustellen, ob der Ordner leer ist oder nicht. Um dies zu überprüfen, führen Sie Folgendes aus:

stat -c %s <foldername>

Die i_size eines leeren Ordners in btrfs sollte Null sein. In ext ist es typischerweise 4k.

Verwandte Links:

https://btrfs.wiki.kernel.org/index.php/Problem_FAQ#I_cannot_delete_an_empty_directory

9
zaTricky

Versuchen Sie es mit cd in dem Verzeichnis und entfernen Sie dann alle Dateien mit rm -rf *. Versuchen Sie dann, das Verzeichnis zu verlassen, und löschen Sie das Verzeichnis mit rmdir.

6
jkd

Versuchen Sie: rmdir --ignore-fail-on-non-empty *directory*

0
Jamie

Versuchen Sie Sudo rm -rf [Folder name]

Wenn das Verzeichnis weiterhin nicht leer angezeigt wird, bedeutet dies, dass das Verzeichnis verwendet wird. Versuchen Sie, es zu schließen oder zu überprüfen, welches Programm es verwendet, und verwenden Sie dann den Befehl erneut.

Arbeitete für mich, als ich versuchte, Unity-Projekt zu löschen und es von Unity Hub verwendet wurde. Einfach Unity Hub schließen und den Befehl neu schreiben.

0
Molham Mohamed

Ich habe Ordner in Windows, die an eine virtuelle Ubuntu VirtualBox-Maschine (VM) angehängt sind. Ich konnte sie nicht aus dem Windows-Dateimanager oder aus dem VM mit rmdir oder rm -Rf * entfernen.

TLDR: Ich konnte sie in Git Bash (natürlich unter Windows) mit rm -Rf * entfernen.

Beim Versuch, Dateien im Windows-Dateimanager zu löschen, wurden Administratorrechte zum Löschen der Ordner benötigt. Aber selbst als Administrator ist es immer noch fehlgeschlagen.

Unter Ubuntu VM (wo ich noch nie Probleme hatte, freigegebene Dateien zu entfernen) wurde der Fehler cannot remove protocol error angezeigt, ebenso wie bei einigen anderen.

Schließlich konnte ich in Git Bash unter Windows die Ordner löschen. Ich vermute, dass Git Bash eine Art Sperre für die Ordner hatte. In Git Bash war mein Arbeitsverzeichnis eines der Verzeichnisse, die ich löschen wollte. Ich habe mich davon zurückgezogen und es dann mit rm -Rf ohne Fehler gelöscht.

0
Buttle Butkus

Wenn Sie keine Schreibberechtigungen festgelegt haben, können Sie das Verzeichnis nicht entfernen.

Im folgenden Beispiel kann ich das Verzeichnis nicht entfernen, obwohl ich Eigentümer des Verzeichnisses bin. Sobald ich Schreibrechte mit chmod hinzufüge, ist alles erfolgreich.

DIR:/xieerqi
[email protected]:$ ls -dl TESTDIR/                                              
dr-xr-xr-x 2 xieerqi xieerqi 4096 Jan 24 16:06 TESTDIR//

DIR:/xieerqi
[email protected]:$ rm -rf TESTDIR/                                              
rm: cannot remove ‘TESTDIR/one & two’: Permission denied
rm: cannot remove ‘TESTDIR/tom&jerry’: Permission denied
rm: cannot remove ‘TESTDIR/jekyl&hide’: Permission denied
rm: cannot remove ‘TESTDIR/pdfReader.sh’: Permission denied

DIR:/xieerqi
[email protected]:$ chmod +w TESTDIR/                                            

DIR:/xieerqi
[email protected]:$ rm -rf TESTDIR/                                              

DIR:/xieerqi
[email protected]:$ echo $?
0
0

Gehen Sie zu dem Ordner, den Sie löschen möchten, und führen Sie diesen Befehl aus, indem Sie den Ordnernamen durch den Namen Ihres Ordners ändern: rm -rf Ordnername

R bedeutet rekursiv und f bedeutet Kraft.

0
Ramon Suarez