«Не могу удалить директорию some_directory: каталог не пустой»

27

Я пытался удалить какой-то каталог, но

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

Но распечатка его содержания не возвращает ни одного

$ ls DE.aspx_files
$

Добавлено: На самом деле

$ 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

Когда я пытаюсь rm .fuse_hidden0001d4bf00000006, он удаляется, но другой новый .fuse_hidden0001d4bf00000007создается.

Вот мне и интересно, что случилось, и как решить эту проблему?

Примечание: это недавно приобретенный внешний портативный жесткий диск, и я просто копирую на него некоторые файлы с помощью программы восстановления данных.

ОС: Ubuntu 12.04

Благодарность!

Тим
источник
3
Вам нужно выяснить, что там монтирует файловую систему FUSE. Попробуйте mount | fgrep fuseнайти его и fusermount -u <mountpoint>размонтировать, прежде чем пытаться удалить каталог.
CodeGnome
Как удалить файл без монтирования?
Стивен Бостон,

Ответы:

16

Скрытые файлы

У вас могут быть скрытые файлы. Вы можете найти их с помощью, ls -laчтобы убедиться, что вы в порядке, действительно удалив их в первую очередь. Затем вы можете удалить файлы перед запуском rm -rили по rmdirмере необходимости.

Принудительное рекурсивное удаление

Вы также можете просто сделать rm -rfпринудительное рекурсивное удаление, даже если целевой каталог содержит файлы. Применяются все обычные предупреждения, но они выполнят работу независимо от того, что содержится в вашем каталоге - если, конечно, у вас есть разрешения на удаление файлов и каталогов.

CodeGnome
источник
1
Кроме того, вы можете запустить, find DE.aspx_files -exec ls -la {} \;чтобы определить скрытые файлы или файлы, названные специальными символами.
Тим Кеннеди
Спасибо, я обнаружил скрытый файл виновника, который можно удалить, но создается новый брат. Пожалуйста, смотрите мою добавленную часть. Принудительное удаление также не работает, потому что «Каталог не пуст».
Тим
57

Файлы формы .fuse_hidden*создаются файловыми системами FUSE, когда файл удаляется, но все еще используется где-то и должен иметь запись в каталоге. Это похоже на .nfs*файлы в каталогах, экспортируемых через NFS .

Запустите, df -T .чтобы увидеть тип файловой системы, которая смонтирована в текущем каталоге, и ее точку монтирования. Для внешнего жесткого диска есть вероятность, что это файловая система NTFS, смонтированная через драйвер NTFS-3G , основанный на FUSE.

Имя является поддельным именем, которое драйвер файловой системы изобретает для удаленного файла. Вы не можете удалить файл (или, скорее, если вы создаете файл, он появляется под другим именем). Вы также не можете удалить каталог, так как он не пустой. Вам нужно будет найти, что использует этот файл. Наиболее вероятная причина использования - если она открыта каким-либо приложением. Запустите lsof /media/mount-pointгде /media/mount-pointточка монтирования файловой системы и найдите открытый файл в этом каталоге.

Жиль "ТАК - перестань быть злым"
источник
6
ЭТОТ ответ, который на самом деле решает проблему
Мартин Эрхардт
Спасибо, это работает. Я использовал этот ответ и увидел кучу вещей, которые использовали мои папки. Перезагрузился, затем снова попытался увидеть тот же список - он был пуст. И тогда удаление прошло гладко.
Севастян
12

Для внешних жестких дисков эта проблема может быть решена путем

  • Щелкните правой кнопкой мыши на папке и выберите Move to Trash
  • Очистить корзину

Это сработало для меня, даже если rm -rfне сработало.

DileepNimantha
источник
1
Да, это работает. Зачем?! Тем не менее, файлы находятся в мусорном ведре и так же проблематично.
Стивен Бостон,
-1

Если вы работаете на Mac, помните также о * .localized файлах, которые могут стать невидимыми даже для 'ls -la', 'find' и тому подобное в файловой системе FUSE. [Это обнаружилось с помощью созданной ConnectedData Transporter файловой системы FUSE на MacBook Pro.]

Дейв
источник
-1

Это может произойти, когда вы загружаете файл в торрент-клиент. Просто убедитесь, что вы отключили торрент-клиент или удалили посевной торрент.

Даниэль Рейд
источник