Чому я отримую "Каталог не порожній", коли я намагаюся видалити порожній каталог?


37

У мене цей порожній каталог, але я постійно отримую таке повідомлення про помилку:

Cannot remove test: Directory not empty

Я знаю, що це питання задавали багато разів, але жодне з них не допомогло.

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

Я sudo rmdir testтак і намагався sudo rm -rf test, і просто не знаю, що не так.

Я прочитав, що це може бути проблемою з файловою системою, але я поняття не маю, як би я вирішив це виправити.


Спробуйтеsudo fsck /
ike

2
Це звичайний каталог чи точка монтажу. Якщо це точка кріплення, перед видаленням її слід відключити. Якщо це звичайний каталог, колись можуть виникнути якісь відкриті ручки, що спричинить цю проблему. Перезавантажте машину один раз і спробуйте її видалити.
vembutech

@rbrick Чи testце ім’я користувача вашого входу? який вихід echo $USER? і що echo $HOME?
αғsnιη

1
Я розгублений, чому користувач не має дозволів на виконання каталогу, а група робить?
Джуліан Стерлінг

Відповіді:


36

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

  1. Клацніть правою кнопкою миші на папці
  2. Перемістіть у кошик
  3. Порожній кошик

Так, це нерозумно, але це працювало для мене (я не знаю як і чому, але проклята папка більше не існує)


У мене те саме питання, і ваша відповідь працює. Не зовсім впевнений, що сталося з дурним, і чому "-rf" не вдалося видалити не порожню папку.
artm

3
Що саме тут сталося? Чому це спрацювало?
Сахіл Арора

Що сталося? Чесно кажучи, я не знаю. Можливо, файл папки чомусь зіпсований: прапор типу "є-порожній" або лічильник файлів типу "як-скільки-файл-всередині" встановлено на помилкове значення. Іноді подібні помилки можуть бути спричинені пошкодженням жорсткого диска. Чому це спрацювало? Я не знаю, як реалізуються команди (подумайте про C), але, мабуть, вони перевіряють ці прапори та лічильники перед тим, як діяти (я маю на увазі, якщо лічильник файлів> 0, то "помилка: каталог не порожній" та перервати), спорожняючи сміття безпосередньо видаліть папку та весь її файл та папку без будь-якої перевірки.
Марко Оттіна

Можливо, для видалення папки через командний рядок потрібні певні умови, наприклад, порожнеча папки, (оскільки видалення вузла папки з файлової системи видаляє лише цей єдиний посилання зв’язку і вимагає, щоб папка була порожньою, щоб жоден інший файл-вузол не був "забутий "через файлову систему через втрату проміжної посилання на них, представлену папкою) .. та видалення папки правою кнопкою миші -> видалення або випорожнення сміття видаляє папку І всі файли та підпапки рекурсивно, не піклуючись про прапори, подібні прилавки та інше (так, перевірки не виконуються)
Марко Оттіна,

1
У моєму випадку, відповідний підкаталог опинився у папці, яка спільно використовувалася з мого Mac на Linux VM, і я намагався видалити папку з боку Linux VM. Схоже, що на Mac-стороні трималися деякі папки. Робота rm -rfз Mac працювала.
MindJuice

5

У мене встановлена ​​система подвійної системи ubuntu 10 + ubuntu. І обидві системи поділяють розділення вікон.

Нещодавно я також не міг видалити порожні папки в тих розділах під ubuntu. Я не можу знайти рішення для вирішення цього питання під Linux.

Однак після того, як я переходжу на Windows, і запускаю

chkdsk

через cmdдля цільового диска. Деякі помилки перевірені. а потім я біжу

chkdsk /F

виправити помилку диска.

Після завершення я можу видалити ці папки зараз.


2
Цей метод працює для мене. Я думаю, що також важливо зауважити, що розділений (-ів) розділ (и) має формат NTFS і він, ймовірно, пошкоджений.
кризмат

4

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


Я Directory not emptyвсе одно отримую . Це здається дивним, тому я записав свій екран, щоб довести.
naXa

Ця команда у відповіді працює, навіть якщо у каталозі є вміст, а також із підкаталогами.
Росомаха

не вірите, просто дивіться: 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. Це все.

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. Такий підхід працював у мене (хоча я не маю поняття, чому це було б), і мені не потрібен кореневий доступ.
Джейк Фішер

2

Якщо каталог є частиною файлової системи, встановленої на CIFS (він же самба), і містить файл, який є розірваним символічним посиланням, то 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


1

У мене була така ж проблема на Ubuntu 16.04, і я її виправив:

  1. випорожнення папки сміття
  2. перезавантаження

Відкриття та закриття файлового менеджера не принесло користі - працювала лише перезавантаження.


0

спробуйте цю команду:

sudo lsof | grep deleted 

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

Якщо так, припиніть службу, і ви зможете видалити каталог.


Очевидно, що каталог не відображатиметься у списку відкритих, видалених дескрипторів файлів, якщо його неможливо видалити. ; -]
Девід Фоерстер

0

Ця проблема з’являється, коли ці папки чи файли не скопійовані повністю. Це помилка вводу / виводу. Я намагався видалити за допомогою Shift+ Delабо через команди, але це не вийшло. Я спробував правою кнопкою миші та "Перемістити в кошик", і це спрацювало.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.