Linux ошибка при удалении файла каталог не пуст

I tried to delete some directory, but

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

But listing its content returns none

$ ls DE.aspx_files
$

Added: Actually

$ 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

When I try to rm .fuse_hidden0001d4bf00000006, it is deleted, but another new .fuse_hidden0001d4bf00000007 created.

So I wonder what happened, and how to fix this problem?

Note: it is a newly bought external portable HDD, and I just copy some files to it using a data recovery program.

OS: Ubuntu 12.04

Thanks!

asked Sep 15, 2012 at 0:34

Tim's user avatar

TimTim

97.1k184 gold badges560 silver badges958 bronze badges

3

Files of the form .fuse_hidden* are created by FUSE filesystems when a file is deleted but still in use somewhere and must still have a directory entry. This is similar to .nfs* files on directories exported over NFS.

Run df -T . to see the type of filesystem that’s mounted on the current directory and its mount point. For an external hard disk, chances are that this is an NTFS filesystem mounted through the NTFS-3G driver, which is base on FUSE.

The name is a fake name that the filesystem driver invents for a deleted file. You can’t delete the file (or rather, if you create the file, it reappears under another name). You can’t delete the directory either, since it isn’t empty. You’ll need to find what is using this file. The most likely cause of being in use is if it’s open by some application. Run lsof /media/mount-point where /media/mount-point is the filesystem mount point and look for an open file in that directory.

answered Sep 16, 2012 at 23:57

Gilles 'SO- stop being evil''s user avatar

3

For external hard disks this problem could be resolved by,

  • Right Click on the folder and select Move to Trash
  • Empty the Trash

It worked for me even if rm -rf didn’t work.

answered Aug 30, 2017 at 17:15

DileepNimantha's user avatar

2

Hidden Files

You may have hidden files. You can find them with ls -la to make sure you’re okay with really deleting them first. Then you can delete the files before running rm -r or rmdir as needed.

Forcing the Recursive Delete

You can also just do rm -rf to force the recursive deletion even if the target directory contains files. All the usual warnings apply, but it will get the job done regardless of what your directory contains—as long as you have permissions to delete the files and directories, of course.

answered Sep 15, 2012 at 0:45

CodeGnome's user avatar

CodeGnomeCodeGnome

7,6401 gold badge18 silver badges25 bronze badges

2

If on the mac, be aware also of *.localized files, which may become invisible even to ‘ls -la’, ‘find’ and their ilk on a FUSE filesystem. [ This discovered using a ConnectedData Transporter-created FUSE filesystem on a MacBook Pro.]

answered Aug 25, 2015 at 10:39

Dave's user avatar

DaveDave

992 bronze badges

This can happen when you are seeding a file in a torrent client too. Just make sure you shut off the torrent client, or remove the seeding torrent.

answered Mar 4, 2016 at 5:15

Daniel Reid's user avatar

You must log in to answer this question.

Not the answer you’re looking for? Browse other questions tagged

.

Rmdir — это утилита командной строки в Linux и Windows, которую можно использовать для удаления непустых каталогов. Это полезная утилита по сравнению со стандартной утилитой rm, потому что rm может удалять каталоги, даже если они не пусты. Это полезно в тех случаях, когда вы хотите удалить только непустые каталоги, и предотвращает случайное удаление каталогов, содержащих файлы.

Ошибка «rmdir: каталог не пуст» возникает, когда вы запускаете команду rmdir в каталоге, который не является пустым, что означает, что он содержит файлы или другие каталоги внутри него. Это ожидаемое поведение команды rmdir, и она выдаст вам ошибку, если вы запустите ее в непустом каталоге в Linux или других операционных системах, в которых есть утилита rmdir.

Как я могу исправить «rmdir: каталог не пуст» в Linux?

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

Мы сообщим вам о различных исправлениях, которые вы можете попробовать, чтобы избавиться от этой ошибки.

1. Используйте параметр «rm -rf»

Вы можете использовать утилиту командной строки «rm» в Linux для удаления непустых каталогов, если вы столкнулись с этой ошибкой. Чтобы убедиться, что каталог не пуст и ошибка не вызвана чем-либо еще, просто введите команду «ls -a» для каталога, который вы хотите удалить. Если вы видите файлы в каталоге, как показывает вывод ‘ls -a’, вы можете ввести команду rm -rf, чтобы удалить каталог.

Пример:

Мы хотим удалить каталог abcd.

Мы ввели команду «ls -a», чтобы проверить, не был ли каталог пустым, и она показала нам, что в каталоге присутствуют некоторые файлы.

Мы можем выполнить команду rmdir для каталога, но это выдаст нам ошибку, поскольку каталог не пуст.

Самое простое решение здесь — использовать rm -rf для каталога.

рм -рф абвд

Параметр -r означает рекурсивный, т.е. рекурсивно удалить все внутри каталога (другие каталоги внутри него тоже будут удалены).

-f означает принудительное удаление, т.е. в данном случае принудительное удаление подразумевает удаление каталога, даже если он не пуст.

Если вы хотите удалить каталог, для которого у вашего пользователя нет прав на запись, вы можете использовать:

судо рм -рф

Использование sudo с rm рекомендуется только в том случае, если вы знаете, что делаете, и каталог, который вы хотите удалить, не является системным каталогом, поскольку пользователь root также может удалять системные каталоги.

2. Используйте файловый менеджер для удаления каталога:

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

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

Если вы используете Ubuntu, вы можете использовать файловый менеджер Nautilus, который установлен в нем по умолчанию, для удаления каталогов. Можно использовать и другие файловые менеджеры. Наутилус — это просто пример.

Исправить rmdir: каталог не пуст в Windows:

Эта ошибка также может возникать в Windows при попытке удалить каталог с помощью командной строки или PowerShell. Чтобы исправить эту ошибку в Windows, вы можете попробовать следующее:

  • Используйте метод rm -rf, как показано в исправлении для Linux выше.
  • Убедитесь, что каталог, который вы хотите удалить, не используется какой-либо другой программой. Если это так, используйте диспетчер задач, чтобы убить эту программу.

Затем попробуйте удалить каталог в cmd или powershell, используя rmdir или rm -rf

Yodo.im - бот учитель Linux и DevOPS

Загрузка…

«Каталог не пуст» перед удалением


0

1

Перед удалением каталога(ов) mc производит поиск файлов в нем(них) и выдает диалог с сообщнием «Каталог не пуст. Удалить рекурсивно?» При этом поиск производится по всей глубине вложенных подкаталогов, число которых может быть большим. Иногда этот поиск может занимать порядка минуты. Хотя, для того чтобы сделать вывод, что каталог не пуст, достаточно найти всего один файл в нем и дальше остановить поиск.

  • Ссылка

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.

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


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

Cannot remove test: Directory not empty

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

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

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

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






Ответы:


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

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

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







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

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

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

chkdsk

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

chkdsk /F

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

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



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






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

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

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

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

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

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

GUI решение

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

сделано.

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

sudo mv folder_error/ .local/share/Trash

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

sudo rm -fr ~/.local/share/Trash/*



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

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


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

stat -c %s test

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

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

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


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

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

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


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

sudo lsof | grep deleted 

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

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



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

Добрый!

Есть проблема:
Перед началом работ по пересборке гластера, некто сделал бэкап данных.
При попытке их скопировать через sudo MC в гластер, получаем ошибку «Невозможно сменить владельца целевого каталога (недопустимый аргумент 22). Причем, если проявить настойчивость, и пару раз нажать повторить, то данные могут быть скопированы.
Терминальную утилиту копирования не пробовал.

При очистке гластера нельзя удалить две папки. Получаем ошибку «Невозможно удалить каталог. Каталог не пуст (39)»
rm -rf ./.* результата не даёт, да и вообще — в папках пусто. Хоть из под mc, хоть из под ls -lai.
Естественно, что права на чтение запись 777.
При этом, если гластер остановить, то папки отлично удаляются без всяких проблем.
Есть мнение, что какая то служба или ресурс обращаются к данным папкам и не дают их удалить.

Кто сталкивался с чем-то подобным или махнет в какую сторону копать?
Как удалить два пустых каталога и как снять ограничение на установку владельца?

Уточняющие данные:
Все сервера
GlusterD работает.
gluster pool list
gluster volume status
gluster volume info
Показывают, что все сервера и брики подключены и смонтированы правильно. Да и не удивительно, т.к. я их сам разобрал и собрал по replica 3. Тут подводных камней нет. Gluster работает исправно, файлы принимает-отдает-удаляет ребалансирует.
При этом и на источнике и на получателе, владельцем файлов является root, из под которого и выполняются операции.
5fc0e0f7989ae042596859.jpeg
5fc0e0ff55e2a338282377.jpeg
5fc0e079b6472500441359.jpeg
5fc0e16fdf646512956609.jpeg

Как удалить непустую директорию в Терминале?

Как удалить следующий каталог?

Я набрал:

rmdir lampp

Эта ошибка появляется:

rmdir: failed to remove `lampp': Directory not empty

Есть ли команда для удаления всех файлы в каталоге и удалить папку каталога?

задан
4 August 2014 в 21:37

поделиться

5 ответов

Используйте следующую команду:

rm -rf lampp

Удаляет все файлы и папки, содержащиеся в каталоге lampp.

Если у пользователя нет прав на удаление папки:

Добавьте sudo в начале команды:

sudo rm -rf folderName

В противном случае, без sudo вы будет возвращено разрешение отказано. И хорошей практикой является попытка не использовать -f при удалении каталога:

sudo rm -r folderName

Примечание: это предполагает, что вы уже находитесь на том же уровне папки, которую хотите удалить в терминале, если не:

sudo rm -r /path/to/folderName

К вашему сведению: вы можете использовать буквы -f, -r, -v:

  • -f = игнорировать несуществующие файлы, никогда побудить
  • -r = рекурсивно удалить каталоги и их содержимое
  • -v = объяснить, что делается

ответ дан Trae
4 August 2014 в 21:37

поделиться

rm -R lampp

Тем не менее, вам нужно быть осторожным с такой рекурсивной командой, поскольку легко случайно удалить намного больше, чем вы предполагали.

Рекомендуется всегда дважды проверять, в каком каталоге вы находитесь, и правильно ли вы ввели команду, прежде чем нажимать Enter.

Более безопасная версия

rm -R -i lampp

Добавление -i делает его немного безопаснее, потому что оно будет подсказывать вам при каждом удалении. Однако, если вы удаляете много файлов, это не будет очень практичным. Тем не менее, вы можете попробовать это в первую очередь.

Примечание о опции -f :

Многие люди предлагают использовать -f (объединяя его в -Rf или -rf), утверждая, что это избавляет от надоедливых подсказок. Однако в обычных случаях вам это не нужно, и его использование подавляет некоторые проблемы, о которых вы, вероятно, действительно хотите знать. Когда вы используете его, вы не будете предупреждены, если ваши аргументы содержат несуществующий каталог или файл (ы): rm просто молча не сможет ничего удалить. Как правило, попробуйте сначала без -f: если есть проблемы с вашими аргументами, то вы заметите. Если вы начинаете получать слишком много запросов о файлах без прав записи, то вы можете попробовать это с -f. В качестве альтернативы, запустите команду от пользователя (или суперпользователя, использующего sudo), у которого есть полные права доступа к файлам и каталогам, которые вы удаляете, чтобы в первую очередь предотвратить эти запросы.

ответ дан thomasrutter
4 August 2014 в 21:37

поделиться

Кстати, я лично хотел удалить каталог, содержащий защищенный от записи файл / s (.git и подкаталоги), и в конце концов понял, что мне также нужно стать суперпользователем, чтобы успешно удалить эти файлы. Вот что я сделал:

#became super user
sudo su -

#deleted contents of, and then the directory, harvey_snake/
rm -R harvey_snake/

ответ дан muru
4 August 2014 в 21:37

поделиться

У меня были некоторые проблемы с этим сегодня, но я преодолел это с помощью sudo.

Предостережение: будьте уверены, что вы хотите полностью удалить объект, прежде чем использовать приведенную ниже команду.

$ sudo rm -R [Directory name]

Я успешно сделал это сегодня и удалил много непустых каталогов, которые, как я подтвердил, мне не нужны / не нужны.

Я использую 14.04 LTS

ответ дан Kenny
4 August 2014 в 21:37

поделиться

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

rm -rvf /path/to/directory  
  • -r = рекурсивно удалять каталоги и их содержимое
  • -v = объяснять, что делается
  • -f = игнорировать несуществующие файлы, никогда не запрашивать

Если вы новичок в Linux, используйте справочные страницы команд ( man rm ) для большей опции и большей точности.

ответ дан muru
4 August 2014 в 21:37

поделиться

Другие вопросы по тегам:

Похожие вопросы:

rmdir – одна из тех базовых команд Linux, которые вы изучите в самом начале, но почти не будете использовать.

Почему?

Потому что может показаться, что rmdir используется для удаления каталогов (т.е. папок), на самом деле по умолчанию она удаляет только пустые каталоги.

Запутались?

Не стоит.

Давайте разберемся в этом подробнее.

Использование команды rmdir на Linux

Команда rmdir имеет простой синтаксис:

rmdir [option] directory

Рассмотрим его использование.

Удаление пустого каталога

Пустой каталог не содержит файлов или каталогов.

Если у вас есть пустой каталог, его можно легко удалить.

Никаких других опций не требуется.

rmdir directory_name

Удаление непустого каталога

Если вы попытаетесь удалить каталог, содержащий файлы и каталоги, команда завершится неудачей с сообщением об ошибке ‘Directory not empty’.

Вы можете принудительно удалить каталог вместе со всем его содержимым с помощью команды rmdir следующим образом:

rmdir --ignore-fail-on-non-empty directory_name

Хотя это работает, вы никогда не увидите, чтобы кто-то использовал этот метод.

Более распространенным (или популярным) способом удаления непустого каталога в Linux является использование команды rm.

rm -r directory_name

Удаление каталога вместе с родительским каталогом

Если у вас есть вложенная структура каталогов, вы можете указать опцию -p для удаления всей структуры.

Так, если у вас есть структура каталогов a/b/c, вы можете использовать:

rmdir -p a/b/c

Это аналогично rmdir a/b/c a/b a.

Обратите внимание, что каталоги также должны быть пустыми.

Или вы можете использовать флаг –ignore-fail-on-non-empty.

Подробный режим

Существует также режим verbose, который вы можете использовать.

Возможно, вы уже заметили, что команда rmdir не показывает никаких результатов для успешных команд.

Если вы хотите увидеть это, вы можете использовать опцию verbose -v:

rmdir -v directory

И это все о команде rmdir.

Поскольку в большинстве случаев вы будете иметь непустые папки, rmdir не сможет их удалить.

О команде –ignore-fail-on-non-empty мало кто помнит, поэтому команда rm -r более популярна.

см. также:

  • 🐧 Как выполнить поиск Grep по всем файлам и во всех каталогах
  • 🏦 18 основных команд Ubuntu и горячие клавиши терминала, которые должен знать каждый новичок
  • 👸 Как использовать на Linux команду find для поиска файлов
  • 💻 Как удалить файлы и каталоги в Linux
  • 📁 Как удалить все файлы из каталога на Linux

Хотя это может показаться излишним, на самом деле мне очень нравится rmdir для определенных операций, потому что нет возможности случайно удалить файлы из каталогов, которые вы считали пустыми.

Возможно, вам также будет интересно:

  • Linux ошибка копирования отказано в доступе
  • Linux ошибка ввода вывода на флешке
  • Linux ошибка command not found
  • Linux как посмотреть ошибки на интерфейсе
  • Linux как исправить ошибки на диске

  • Понравилась статья? Поделить с друзьями:
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии