Почему я получаю «Каталог не пустой», когда я пытаюсь удалить пустой каталог?

37

У меня есть этот пустой каталог, но я получаю следующее сообщение об ошибке:

Cannot remove test: Directory not empty

Я знаю, что этот вопрос задавался много раз, но никто из них не помог.

Я пытался ls -laубедиться, что не было никаких скрытых файлов, и, кажется, нет: введите описание изображения здесь

Я попробовал sudo rmdir test, а также sudo rm -rf test, и я просто не знаю , что это неправильно.

Я читал, что это может быть проблема с файловой системой, но я понятия не имею, как бы я исправить это.

rbrick
источник
Попробуйтеsudo fsck /
ик
2
Это нормальный каталог или точка монтирования. Если это точка монтирования, ее следует отключить перед удалением. Если это обычный каталог, иногда могут возникать некоторые открытые дескрипторы. Перезагрузите компьютер один раз и попробуйте удалить его.
vembutech
@rbrick Имя testвашего логина? какой выход echo $USER? а что echo $HOME?
α14sнιη 29.12.14
1
Я запутался, почему у пользователя нет прав на выполнение каталога, а у группы?
Джулиан Стерлинг
2
Возможный дубликат Как удалить непустую директорию в Терминале?
Раду Рэдяну

Ответы:

36

У меня была такая же проблема на внешнем жестком диске, я пробовал так много способов, используя командную строку, но каждый раз терпел неудачу. Вот что сработало для меня:

  1. Щелкните правой кнопкой мыши на папке
  2. Переместить в корзину
  3. Очистить корзину

Да, это глупо, но это сработало для меня (я не знаю, как и почему, но проклятая папка больше не существует)

Марко Оттина
источник
У меня та же проблема, и ваш ответ работает. Не совсем уверен, что случилось глупо, и почему "-rf" не удалось удалить непустую папку.
artm
3
Что здесь произошло? Почему это работает?
Сахиль Арора
Что произошло? Честно говоря, я не знаю. Возможно, по какой-то причине файл папки был поврежден: для флага «is-empty» или для счетчика файлов «how-many-file-inside» было установлено ошибочное значение. Иногда такие ошибки могут быть вызваны повреждениями жесткого диска. Почему это работает? Я не знаю, как реализованы команды (подумайте о C), но я предполагаю, что они проверяют эти флаги и счетчики перед тем, как действовать (я имею в виду, если счетчик файлов> 0, то «ошибка: каталог не пустой» и прерывание) при очистке Мусор непосредственно удалить папку и все ее файлы и подпапки без какой-либо проверки.
Марко Оттина
Возможно, удаление папки через командную строку требует некоторых условий, таких как пустота папки (поскольку удаление узла папки из файловой системы удаляет только этот единственный узел ссылки и требует, чтобы папка была пустой, чтобы ни один файл-узел не был «забыт» «через файловую систему из-за потери промежуточной ссылки на них, представленной папкой) .. и удаление папки с помощью щелчка правой кнопкой мыши -> удалить или очистить корзину, удаляет папку И все файлы и подпапки рекурсивно, не заботясь о флагах, счетчики и тому подобное (так что никакие проверки не выполняются)
Марко Оттина
1
В моем случае рассматриваемый подкаталог находился в папке, которая была использована на моем Mac для виртуальной машины Linux, и я пытался удалить папку со стороны Linux на виртуальной машине. Кажется, что сторона Mac держалась за некоторые папки. Делать rm -rfсо стороны Mac работал.
MindJuice
5

У меня установлена ​​Win 10 + Ubuntu Dual System. И обе системы используют разделение окон.

Недавно я столкнулся с невозможностью удалить пустые папки в этих разделах под Ubuntu. Я не могу найти решение, чтобы решить это под Linux.

Однако после того, как я переключаюсь на окна и запускаю

chkdsk

через cmdдля целевого диска. Некоторые ошибки проверены. а потом я бегу

chkdsk /F

исправить ошибку диска.

После завершения я могу удалить эти папки сейчас.

е-облако
источник
2
Этот метод работает для меня. Я думаю, что также важно отметить, что общий раздел (ы) отформатирован в NTFS и, вероятно, он поврежден.
Krismath
4

Вы можете удалить его, набрав sudo rm -rf {dir_name}. Возможно, для каталога установлено разрешение только для чтения. Я надеюсь, что данная команда может удалить папку.

Росомаха
источник
Я все Directory not emptyравно получаю . Это кажется странным, поэтому я записал свой экран, чтобы доказать.
НАКСА
Эта команда в ответе работает, даже если в каталоге есть содержимое, а также с подкаталогами.
Росомаха
не верьте мне, просто посмотрите: D drive.google.com/open?id=1UEYVa4UT6df7xucrq-lO82xjk3afHHzA
naXa
это странное поведение было вызвано ошибками в разделе NTFS. решено с chkdsk /F.
naXa
4

У меня была та же проблема, не удалось удалить каталог, так как он не пустой.

Эта последовательность операций работала для меня.

  1. Сначала из командной строки

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

Приведенная выше команда помогает Ubuntu игнорировать каталог не пустой.

  1. Тогда просто зайдите в папку и Shift + Del. Вот и все.
Amit
источник
3

GUI решение

  1. Переместить или вырезать и вставить папку в корзину
  2. очистить корзину

сделано.

Решение для командной строки

sudo mv folder_error/ .local/share/Trash

Вы можете очистить с помощью trash-cli: trash-empty или

sudo rm -fr ~/.local/share/Trash/*
Кадир Ю.
источник
1
Я думаю, что решение командной строки здесь на самом деле является общим решением. Переместите пустую папку в другое место и удалите ее после перемещения. Например, как-то так mkdir a ; mv test a/ ; rm -rf a/test ; rm -rf a. Такой подход работал для меня (хотя я понятия не имею, почему так будет), и мне не нужен был root-доступ.
Джейк Фишер
2

Если каталог является частью файловой системы, смонтированной с помощью CIFS (она же samba), и содержит файл, который является неработающей символической ссылкой, то lsэтот файл не упоминается. (Я наблюдаю эту ошибку на клиенте CIFS под управлением 14.04.2 LTS и на сервере под управлением 12.04.5 LTS.)

Таким образом, каталог не пустой , но (через CIFS) у вас нет возможности это увидеть. Файл может быть виден только и, следовательно, может быть удален только командой, выполняющейся на файловом сервере, на котором размещена эта файловая система.

Камиль Гудесюн
источник
2

Если вы используете btrfs, это, возможно, пустой каталог с ненулевым i_size. Вы можете проверить, так ли это с:

stat -c %s test

I_size пустой папки в btrfs должен быть нулевым. В моем случае я получил 6160 с~/.config/chromium/Default .

Предлагаемое решение состоит в том, чтобы размонтировать файловую систему, запустить, btrfs checkчтобы подтвердить проблему и проверить другие проблемные каталоги, и, наконец, запустить, btrfs check --repairчтобы исправить. Эта операция рискованна, поэтому рекомендуется сначала сделать резервную копию файлов.

Источник: Btrfs Проблема FAQ

wzhd
источник
1

У меня была та же проблема в Ubuntu 16.04, и я исправил ее:

  1. очистка папки для мусора
  2. перезагрузка

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

дол
источник
0

попробуйте эту команду:

sudo lsof | grep deleted 

Проверьте в списке, если ваш каталог все еще используется. : D

Если это так, остановите службу, и вы сможете удалить каталог.

ashwin2011
источник
Очевидно, что каталог не будет отображаться в списке открытых, удаленных файловых дескрипторов, если его нельзя удалить. ; -]
Дэвид Фёрстер
0

Эта проблема возникает, когда эти папки или файлы не копируются полностью. Это ошибка ввода / вывода. Я пытался удалить с помощью Shift+ Delили с помощью команд, но они не работали. Я попытался щелкнуть правой кнопкой мыши и «Переместить в корзину», и это сработало.

lhodeniz
источник