Чому я не можу видалити папку?


14
Could not remove the folder [Folder name].

Show more details
 Error removing file: Directory not empty

Cancel-Skip All-Skip

Я намагався видалити ці папки з терміналу за допомогою:

rm -r

2
Якщо ця помилка виходить з nautilus, ви можете додати знімок екрана до свого питання. Крім того, який вихід rm -rз терміналу? Ви пробували з відповідями цієї публікації ?
Лусіо

1
використовувати rm -rfзамість цього
nickanor

Мене використовували rm -Rfдля видалення рекурсивних каталогів, можливо, ця робота для вас. man rm
Пропис

1
У вас є дозвіл на видалення цього каталогу? Будь ласка, виконайте його ls -laта вставте тут, щоб відкинути цю опцію.
revnoise

Я вважав, що папку видалили спочатку з Windows, а потім спробували видалити на Ubuntu. Потім спробували видалити в Windows, але вказали помилку. Directory not empty але все його порожнє обіцяння. У Windows написано помилкаError x00000
tepheno

Відповіді:


10

Ви спробували sudo rm -r. Які файли існують? Ви також можете спочатку видалити всі файли, а потім видалити папку. Це зайва робота, але іноді варто того, щоб виконати роботу.

sudo призначений для надрукуючих дій.


Я знаю, що в судо і в папці немає файлів, які знаходяться лише в підпапках. Папка виконавця, а потім папка альбому. Просто папка.
тефено

це працює чувак ...
Анджелін Надар

9

У мене виникла ця проблема з папкою у файловій системі btrfs. Перевірка точок кріплення та lsof - це звичайні речі, які потрібно шукати. У моєму випадку це була пошкодження, спричинене старою помилкою, оскільки виправлено:

Нормальні речі для перевірки:

  • Lsof + D <шлях> - Це буде л я їв т всіх ö пера ф Ільзе. Ви не можете видалити папку, що містить відкриті файли, хоча це також може призвести до дещо іншої помилки: "Пристрій чи ресурс зайнятий". Зауважте, що якщо ви не залишите "+ D <шлях>", lsof покаже список усіх папок у всіх файлових системах - це втратить час. ;)
  • mount : Це покаже вам поточно змонтовані файлові системи. Ви не можете видалити активно встановлену точку монтування або її батьківські папки.
  • підпідпис btrfs <шлях> : Подібно до точки монтажу, ви не можете видалити підпотоку btrfs за винятком випадків, використовуючи специфічну для btrfs команду: btrfs subvolume delete <path> .

Корупційний шлях

У випадку корупції, коли її неможливо легко усунути, основне рішення - створити резервну копію, відформатувати файлову систему та відновити її (залишаючи погані дані). Залежно від кількості даних у файловій системі, це може бути справою. : - /

У моєму випадку папка проблем знаходилася всередині підтомника, тому я зміг зробити вищезазначене, але видаливши лише підпоту замість усієї файлової системи. Я створив резервну копію даних і видалив підтомник: btrfs sub del <subvolume-path> . Тоді мені вдалося відновити новий підпункт, залишаючи проблематичну папку.

Пошкодження i_size

Причиною в моєму випадку було виявлено корупцію i_size , де вона була не нульовою. Btrfs використовує i_size, щоб вказати, чи папка порожня. Щоб перевірити це, запустіть:

stat -c %s <foldername>

I_size порожньої папки в btrfs повинен бути нульовим. У ext це, як правило, 4k.

Пов’язані посилання:

https://btrfs.wiki.kernel.org/index.php/Problem_FAQ#I_cannot_delete_an_empty_directory


6

Спробуйте cdв каталог, а потім видаліть усі файли за допомогою rm -rf *. Потім спробуйте вийти з каталогу та скористайтеся rmdirдля видалення каталогу.


Це прекрасно працює для мене +1 Людина подяки
AndrewL64

Я спробував це, і отримав повідомлення про помилку: "Аргумент занадто довгий"
Rafael_Espericueta

1

Спробуйте sudo rm -rf [Folder name]

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

Працював для мене, коли я намагався видалити проект Unity, і його використовував центр об'єднання. просто закрили концентраційний центр і переписали команду.


0

Перейдіть до папки прямо перед тією, яку ви хочете видалити та виконати цю команду, змінивши ім'я папки за назвою вашої папки: rm -rf ім'я папки

R означає рекурсивну, а f означає силу.


rm: cannot remove Wan Pisu - New World': Directory not empty
тефено

Ви використовували -rf?
Рамон Суарес

-rfЯ думаю, я використав rm -r -f -vсер.
тефено

Я щойно робив тест з тим же ім'ям каталогу, і він працював на мене, також використовуючи ваш спосіб відокремлення rf v. Ви впевнені, що використовуєте, rmа ні rmdir? Чи багатослівний (-v) дав вам підказки? Також, чи є у вашому каталозі файли 0 байтів? "rm -r -f -v Wan \ Pisu \ - \ New \ World / видалено" Wan Pisu - Новий світ / test.test "видалено каталог:" Wan Pisu - Новий світ ""
Ramon Suarez

ні, це лише папки. Крім того, коли я видаляю його в Windows, він також не Error; 0x-----може видалити. -vпояснює, що робиться Я знаюrm --help
тефено


0

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

Наприклад, внизу, хоча я є власником каталогу, я не можу його видалити. Як тільки я додаю дозволи на запис із chmod- все успішно.

DIR:/xieerqi
skolodya@ubuntu:$ ls -dl TESTDIR/                                              
dr-xr-xr-x 2 xieerqi xieerqi 4096 Jan 24 16:06 TESTDIR//

DIR:/xieerqi
skolodya@ubuntu:$ rm -rf TESTDIR/                                              
rm: cannot remove ‘TESTDIR/one & two’: Permission denied
rm: cannot remove ‘TESTDIR/tom&jerry’: Permission denied
rm: cannot remove ‘TESTDIR/jekyl&hide’: Permission denied
rm: cannot remove ‘TESTDIR/pdfReader.sh’: Permission denied

DIR:/xieerqi
skolodya@ubuntu:$ chmod +w TESTDIR/                                            

DIR:/xieerqi
skolodya@ubuntu:$ rm -rf TESTDIR/                                              

DIR:/xieerqi
skolodya@ubuntu:$ echo $?
0

0

У мене є папки в Windows, які встановлені на віртуальній машині Ubuntu VirtualBox (VM). Я не зміг їх видалити з файлового менеджера Windows або з ВМ за допомогою rmdirабо rm -Rf *.

TLDR : Нарешті я зміг їх видалити в Git Bash (звичайно в Windows), використовуючи rm -Rf *.

Коли я намагався видалити файловий менеджер Windows, він сказав, що мені потрібні привілеї адміністратора, щоб видалити папки. Але, навіть як адміністратор, все-таки провалився.

Зсередини Ubuntu VM (де я ніколи не мав проблем із видаленням спільних файлів), я отримав помилку cannot remove protocol error, як і деякі інші.

Нарешті, в Git Bash в Windows мені вдалося видалити папки. Я здогадуюсь, що Гіт Баш мав якийсь замок на папках. У Git Bash мій робочий каталог був одним із тих, кого я намагався видалити. Я відмовився від нього, а потім видалив його, використовуючи rm -Rfбез жодної помилки.

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