Dlaczego pojawia się komunikat „Katalog nie jest pusty”, gdy próbuję usunąć pusty katalog?


37

Mam ten pusty katalog, ale wciąż pojawia się następujący komunikat o błędzie:

Cannot remove test: Directory not empty

Wiem, że to pytanie było zadawane wiele razy, ale żadne z nich nie pomogło.

Starałem ls -lasię upewnić, że nie ma ukrytych plików i wydaje się, że nie ma: wprowadź opis zdjęcia tutaj

Próbowałem sudo rmdir testrównież sudo rm -rf testi po prostu nie wiem, co jest nie tak.

Przeczytałem, że to może być problem z systemem plików, ale nie mam pojęcia, jak bym to naprawił.


Spróbujsudo fsck /
ike

2
Czy jest to normalny katalog lub punkt instalacji. Jeśli jest to punkt montowania, należy go odmontować przed usunięciem. Jeśli jest to normalny katalog, czasami może istnieć kilka otwartych uchwytów, które powodują ten problem. Uruchom ponownie komputer raz i spróbuj go usunąć.
vembutech

@rbrick Czy testto nazwa użytkownika logowania? Jaka jest wydajność echo $USER? i co echo $HOME?
αғsнιη

1
Jestem zdezorientowany, dlaczego użytkownik nie ma uprawnień do wykonywania katalogu, ale grupa ma?
Julian Stirling,

Odpowiedzi:


36

Miałem ten sam problem na zewnętrznym dysku twardym, próbowałem na wiele sposobów przy użyciu wiersza polecenia, ale za każdym razem nie udawało mi się. To działało dla mnie:

  1. Kliknij folder prawym przyciskiem myszy
  2. Przenieść do kosza
  3. Opróżnić kosz

Tak, to głupie, ale zadziałało dla mnie (tak naprawdę nie wiem jak i dlaczego, ale ten przeklęty folder już nie istnieje)


Mam ten sam problem i twoja odpowiedź działa. Nie jestem pewien, co się stało z tą głupią rzeczą i dlaczego „-rf” nie usunął niepustego folderu.
artm

3
Co się tu właśnie stało? Dlaczego to zadziałało?
Sahil Arora,

Co się stało? Szczerze mówiąc nie wiem. Być może plik folderu został z jakiegoś powodu uszkodzony: flaga taka jak „is-empty” lub licznik plików jak „how-many-file-inside” został ustawiony na błędną wartość. Czasami takie błędy mogą być spowodowane uszkodzeniem dysku twardego. Dlaczego to zadziałało? Nie wiem, jak polecenia są implementowane (pomyśl o C), ale myślę, że sprawdzają te flagi i liczniki przed działaniem (to znaczy, jeśli licznik plików> 0 to „błąd: katalog nie jest pusty” i przerywają), podczas opróżniania kosz bezpośrednio usuwa folder oraz cały jego plik i podfolder bez żadnej kontroli.
Marco Ottina

Być może usunięcie folderu za pomocą wiersza polecenia wymaga spełnienia pewnych warunków, takich jak pustka folderu (ponieważ usunięcie węzła folderu z systemu plików usuwa tylko ten pojedynczy węzeł link i wymaga, aby folder był pusty, aby żaden inny węzeł pliku nie został „zapomniany” „przez system plików z powodu utraty pośredniego łącza do nich reprezentowanego przez folder) .. i usunięcia folderu prawym przyciskiem myszy -> usuń lub opróżnij kosz, usuwa folder ORAZ wszystkie pliki i podfoldery rekurencyjnie, nie dbając o flagi, liczniki i takie
rzeczy

1
W moim przypadku wspomniany podkatalog znajdował się w folderze udostępnionym z mojego komputera Mac na maszynie wirtualnej z systemem Linux i próbowałem usunąć folder po stronie maszyny z linuksem. Wygląda na to, że strona Mac trzymała jakieś foldery. Wykonanie rm -rfod strony Maca działało.
MindJuice

5

Mam zainstalowany podwójny system Win 10 + Ubuntu. Oba systemy współużytkują parity systemu Windows.

Ostatnio również nie mogłem usunąć pustych folderów z tych partycji pod Ubuntu. Nie mogę znaleźć rozwiązania tego problemu pod Linuksem.

Jednak po przejściu do systemu Windows i uruchomieniu

chkdsk

przez cmddla dysku docelowego. Niektóre błędy zostały sprawdzone. a potem biegnę

chkdsk /F

naprawić błąd dysku.

Po zakończeniu mogę teraz usunąć te foldery.


2
Ta metoda działa dla mnie. Myślę, że ważne jest również, aby pamiętać, że partycje współdzielone są sformatowane w systemie NTFS i prawdopodobnie są uszkodzone.
krismath

4

Możesz go usunąć, pisząc sudo rm -rf {dir_name}. Katalog mógł mieć ustawione uprawnienia tylko do odczytu. Mam nadzieję, że podane polecenie może usunąć folder.


Tak Directory not emptyczy inaczej. Wydaje się to dziwne, więc nagrałem ekran, żeby to udowodnić.
naXa

To polecenie w odpowiedzi działa, nawet jeśli katalog zawiera zawartość, a także podkatalogi.
Wolverine


to dziwne zachowanie było spowodowane błędami na partycji NTFS. rozwiązany z chkdsk /F.
naXa

4

Miałem ten sam problem, że nie mogłem usunąć katalogu, ponieważ nie jest pusty.

Ta sekwencja operacji zadziałała dla mnie.

  1. Najpierw z wiersza poleceń

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

Powyższe polecenie pomaga ubuntu zignorować katalog nie jest pusty.

  1. Następnie przejdź do folderu i Shift + Del. To wszystko.

3

Rozwiązanie GUI

  1. Przenieś lub wytnij i wklej folder do kosza
  2. wynieś śmieci

zrobione.

Rozwiązanie wiersza polecenia

sudo mv folder_error/ .local/share/Trash

możesz wyczyścić za pomocą trash-cli: trash-empty lub

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

1
Myślę, że rozwiązanie wiersza poleceń jest w rzeczywistości rozwiązaniem ogólnym. Przenieś pusty folder w inne miejsce i usuń go po przeniesieniu. Np. Coś takiego mkdir a ; mv test a/ ; rm -rf a/test ; rm -rf a. Takie podejście zadziałało dla mnie (chociaż nie mam pojęcia, dlaczego tak się stanie) i nie potrzebowałem dostępu do konta root.
Jake Fisher

2

Jeśli katalog jest częścią systemu plików zamontowanego za pomocą CIFS (alias samba) i zawiera plik będący zepsutym dowiązaniem symbolicznym, wówczas lsnie wspomina o tym pliku. (Obserwuję ten błąd na kliencie CIFS z 14.04.2 LTS i serwerze z 12.04.5 LTS.)

Tak więc katalog nie jest pusty , ale (w porównaniu z CIFS) nie możesz tego zobaczyć. Plik można wyświetlić, a zatem można go usunąć tylko za pomocą polecenia uruchomionego na serwerze plików obsługującym ten system plików.


2

Jeśli używasz btrfs, prawdopodobnie jest to pusty katalog z niezerowym i_size. Możesz sprawdzić, czy tak jest w przypadku:

stat -c %s test

Rozmiar i_size pustego folderu w btrfs powinien wynosić zero. W moim przypadku mam 6160 z ~/.config/chromium/Default.

Sugerowanym rozwiązaniem jest odmontowanie systemu plików, uruchomienie w btrfs checkcelu potwierdzenia problemu i sprawdzenie innych problematycznych katalogów, a następnie uruchomienie w btrfs check --repaircelu naprawy. Ta operacja jest jednak ryzykowna, dlatego warto najpierw wykonać kopię zapasową plików.

Źródło: Btrfs Problem FAQ


1

Miałem ten sam problem na Ubuntu 16.04 i naprawiłem go przez:

  1. opróżnianie folderu kosza
  2. ponowne uruchomienie

Otwieranie i zamykanie menedżera plików nie działało dobrze - działało tylko ponowne uruchomienie.


0

spróbuj tego polecenia:

sudo lsof | grep deleted 

Sprawdź na liście, czy twój katalog jest nadal używany. :RE

Jeśli tak, zatrzymaj usługę, a będziesz mógł usunąć katalog.


Oczywiście katalog nie pojawi się na liście otwartych, usuniętych deskryptorów plików, jeśli nie można go usunąć. ; -]
David Foerster

0

Ten problem pojawia się, gdy te foldery lub pliki nie są całkowicie skopiowane. To błąd wejścia / wyjścia. Próbowałem usunąć za pomocą Shift+ Dellub poleceń, ale te nie działały. Próbowałem kliknąć prawym przyciskiem myszy i „Przenieś do kosza” i zadziałało.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.