„Nie można usunąć„ some_directory ”: katalog nie jest pusty”

27

Próbowałem usunąć jakiś katalog, ale

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

Ale wyświetlenie jego zawartości nie zwraca żadnego

$ ls DE.aspx_files
$

Dodano: Właściwie

$ 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

Kiedy próbuję rm .fuse_hidden0001d4bf00000006, jest usuwany, ale .fuse_hidden0001d4bf00000007tworzony jest nowy .

Zastanawiam się więc, co się stało i jak rozwiązać ten problem?

Uwaga: jest to nowo zakupiony zewnętrzny przenośny dysk twardy, a ja po prostu kopiuję do niego niektóre pliki za pomocą programu do odzyskiwania danych.

System operacyjny: Ubuntu 12.04

Dzięki!

Tim
źródło
3
Musisz dowiedzieć się, co tam instaluje system plików FUSE. Spróbuj mount | fgrep fusego znaleźć i fusermount -u <mountpoint>odmontować przed próbą usunięcia katalogu.
CodeGnome
Jak usunąć plik bez montowania?
Stephen Boston

Odpowiedzi:

16

Ukryte pliki

Możliwe, że masz ukryte pliki. Możesz je znaleźć, ls -laaby upewnić się, że wszystko w porządku, zanim je naprawdę usuniesz. Następnie możesz usunąć pliki przed uruchomieniem rm -rlub rmdirw razie potrzeby.

Wymuszanie usuwania cyklicznego

Możesz także zrobić, rm -rfaby wymusić usunięcie rekurencyjne, nawet jeśli katalog docelowy zawiera pliki. Obowiązują wszystkie zwykłe ostrzeżenia, ale wykona zadanie niezależnie od zawartości katalogu - oczywiście pod warunkiem, że masz uprawnienia do usuwania plików i katalogów.

CodeGnome
źródło
1
możesz także uruchomić, find DE.aspx_files -exec ls -la {} \;aby zidentyfikować ukryte pliki lub pliki o nazwach specjalnych.
Tim Kennedy,
Dzięki, zidentyfikowałem ukryty plik winowajcy, który można usunąć, ale generowane jest nowe rodzeństwo. Proszę zobaczyć moją dodaną część. Wymuszone usunięcie również nie działa, ponieważ „Katalog nie jest pusty”.
Tim
57

Pliki formularza .fuse_hidden*są tworzone przez systemy plików FUSE, gdy plik zostanie usunięty, ale nadal gdzieś jest używany i nadal musi zawierać pozycję katalogu. Jest to podobne do .nfs*plików w katalogach eksportowanych przez NFS .

Uruchom, df -T .aby zobaczyć typ systemu plików zamontowanego w bieżącym katalogu i jego punkt podłączenia. W przypadku zewnętrznego dysku twardego istnieje prawdopodobieństwo, że jest to system plików NTFS zamontowany za pomocą sterownika NTFS-3G , który jest oparty na FUSE.

Nazwa jest fałszywą nazwą wymyśloną przez sterownik systemu plików dla usuniętego pliku. Nie możesz usunąć pliku (a raczej, jeśli go utworzysz, pojawi się ponownie pod inną nazwą). Nie można również usunąć katalogu, ponieważ nie jest pusty. Musisz dowiedzieć się, co korzysta z tego pliku. Najbardziej prawdopodobną przyczyną użycia jest to, że jest on otwarty przez jakąś aplikację. Uruchom lsof /media/mount-pointgdzie /media/mount-pointjest punkt montowania systemu plików i poszukaj otwartego pliku w tym katalogu.

Gilles „SO- przestań być zły”
źródło
6
Ta odpowiedź rozwiązuje problem
Martin Erhardt,
Dzięki, działa. Użyłem tej odpowiedzi i zobaczyłem kilka rzeczy, które korzystały z moich folderów. Uruchomiono ponownie, a następnie ponownie spróbowałem zobaczyć tę samą listę - była pusta. A potem usunięcie poszło gładko.
Sevastyan
12

W przypadku zewnętrznych dysków twardych problem ten można rozwiązać,

  • Kliknij folder prawym przyciskiem myszy i wybierz Move to Trash
  • Wynieś śmieci

To działało dla mnie, nawet jeśli rm -rfnie działało.

DileepNimantha
źródło
1
Tak, to działa. Czemu?! Jednak pliki znajdują się w koszu i są równie problematyczne.
Stephen Boston
-1

Jeśli używasz komputera Mac, pamiętaj także o plikach * .localized, które mogą stać się niewidoczne nawet dla 'ls -la', 'find' i ich podobnych w systemie plików FUSE. [Odkryto to za pomocą systemu plików FUSE utworzonego przez ConnectedData Transporter na MacBooku Pro.]

Dave
źródło
-1

Może się to zdarzyć, gdy wysyłasz plik w kliencie torrent. Po prostu upewnij się, że wyłączyłeś klienta torrenta lub usunąłeś seeding torrent.

Daniel Reid
źródło