Рекурсивное удаление каталога линукс

Содержание
  1. Удаление Папки и Файлов в Linux
  2. Команда rmdir
  3. Удаление Папки в Linux с Помощью Команды rmdir
  4. Команда rm
  5. Как Удалить Файл в Linux с Помощью Команды rm
  6. Итоги
  7. Как удалить каталог в Linux
  8. Подготовка
  9. Удаление каталогов с помощью rmdir
  10. Удаление каталогов с помощью rm
  11. Удаление каталогов с помощью find
  12. Удаление всех пустых каталогов
  13. / bin / rm: слишком длинный список аргументов
  14. Выводы
  15. Рекурсивное удаление каталога
  16. Re: Рекурсивное удаление каталога
  17. Re: Рекурсивное удаление каталога
  18. Re: Рекурсивное удаление каталога
  19. Re: Рекурсивное удаление каталога
  20. Re: Рекурсивное удаление каталога
  21. Re: Рекурсивное удаление каталога
  22. Re: Рекурсивное удаление каталога
  23. Re: Рекурсивное удаление каталога
  24. Re: Рекурсивное удаление каталога
  25. Re: Рекурсивное удаление каталога
  26. Re: Рекурсивное удаление каталога
  27. Re: Рекурсивное удаление каталога
  28. Re: Рекурсивное удаление каталога
  29. Re: Рекурсивное удаление каталога
  30. Re: Рекурсивное удаление каталога
  31. Re: Рекурсивное удаление каталога
  32. Re: Рекурсивное удаление каталога
  33. Re: Рекурсивное удаление каталога
  34. Re: Рекурсивное удаление каталога
  35. Re: Рекурсивное удаление каталога
  36. Re: Рекурсивное удаление каталога

Удаление Папки и Файлов в Linux

Работать с командной строкой должен уметь каждый будущий системный администратор и опытный пользователь Linux. Сегодня мы рассмотрим ещё одну базовую функцию — удаление папки и файлов в Linux с помощью командной строки.

Прокачайте ваш Linux сервер, воспользовавшись скидками на VPS-хостинг в Hostinger! Большой выбор планов, как для учебных, так и для крупных коммерческих проектов.

Команда rmdir

Команда, используемая, чтобы удалить пустую папку в Linux через командную строку — это rmdir.

Основной синтаксис этой команды довольно простой. Вот пример:

  • rmdir — это команда
  • [опция] — опциональный модификатор, который изменяет поведение команды
  • НазваниеПапки — каталог, который вы хотите удалить

Если опция не указана, rmdir просто удаляет каталог, имя которого указано в качестве места назначения. Перед использованием этой команды вам нужно будет войти на сервер VPS через SSH. Вот статья, которая поможет вам это сделать.

Удаление Папки в Linux с Помощью Команды rmdir

Перед использованием команды rmdir мы рекомендуем вам проверить список файлов в каталоге с помощью команды ls. В нашем случае у нас есть каталог с названием Dir1.

Эта команда удалит пустой каталог с именем Dir1. Довольно просто, правда?

Вы также можете удалить несколько каталогов, разделив их имена пробелами. Например:

После выполнения этой команды каталоги с именами Dir1, Dir2 и Dir3 будут удалены.

Допустим, у нас есть папка Dir3. Dir3 содержит подкаталоги и файлы. Теперь, если мы используем команду:

То получим ошибку:

Как вы уже могли догадаться, rmdir работает только с пустыми каталогами.

Rmdir — умная утилита, которая позволяет удалять только пустые папки. Таким образом, она защищает данные от случайной потери. Помните, что удалённые данные в любом дистрибутиве Linux практически невозможно восстановить.

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

Эта команда удалит Dir3 и его родительские каталоги Dir2 и Dir1.

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

Команда rm

Команда rmdir отлично подходит для безопасного удаления неиспользуемых и пустых каталогов. Если вы хотите удалить файл или каталог, содержащий файлы, вам придётся использовать команду rm.

Синтаксис этой команды похож на rmdir:

Как Удалить Файл в Linux с Помощью Команды rm

Давайте используем команду rm, чтобы удалить файл с именем article.txt:

Допустим, у нас есть каталог с именем Dir1, содержащий подкаталоги и файлы, чтобы удалить его, нам понадобится модификатор -r. Команда будет выглядеть так:

Опция -r рекурсивно удаляет каталоги и их содержимое.

Ещё одна полезная опция -i. Она попросит вас подтвердить удаление каждого отдельного файла, благодаря чему вы сможете избежать любых неприятных ошибок.

Читайте также:  Windows 10 home terminal server

Вы также можете удалить пустые каталоги, используя опцию -d. Следующая команда удалит пустую папку с именем Dir1:

Вы можете использовать подстановочный знак (*) и обычные расширения для сопоставления нескольких файлов. Например, следующая команда удалит все файлы PDF в текущем каталоге.

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

Опция -f позволяет принудительно удалить всё, что находится в каталоге. Команда будет выглядеть так:

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

Вы также можете удалить несколько папок за раз. Следующая команда удалит три каталога Dir1, Dir2 и Dir3.

Поздравляем, вы успешно освоили основные функции команд rm и rmdir, позволяющие удалить файл или папку в Linux!

Итоги

Случайное удаление папки или даже одного файла в Linux может привести к серьёзным проблемам. Вот почему важно освоить две основные команды для удаления файлов и каталогов — rm и rmdir. В этой статье мы рассмотрели эти две команды и различные опции, которые позволяют их модифицировать.

Надеемся, что эта статья была полезной! И помните, что после удаления файла или каталога из Linux вы не сможете их восстановить, поэтому будьте предельно осторожны! Удачи.

Ольга уже около пяти лет работает менеджером в сфере IT. Написание технических заданий и инструкций — одна из её главных обязанностей. Её хобби — узнавать что-то новое и создавать интересные и полезные статьи о современных технологиях, веб-разработке, языках программирования и многом другом.

Источник

Как удалить каталог в Linux

Есть несколько различных способов удаления каталогов в системах Linux. Если вы используете файловый менеджер рабочего стола, такой как Gnome’s Files или KDE’s Dolphin, вы можете удалять файлы и каталоги с помощью графического пользовательского интерфейса менеджера. Но если вы работаете на автономном сервере или хотите удалить сразу несколько каталогов, лучшим вариантом является удаление каталогов (папок) из командной строки.

В этой статье мы объясним, как удалять каталоги в Linux с помощью команд rmdir , rm и find .

Подготовка

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

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

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

Имена каталогов с пробелами должны быть экранированы обратной косой чертой ( / ).

Удаление каталогов с помощью rmdir

rmdir — это утилита командной строки для удаления пустых каталогов. Это полезно, когда вы хотите удалить каталог только в том случае, если он пуст, без необходимости проверять, пуст каталог или нет.

Чтобы удалить каталог с помощью rmdir , введите команду, а затем имя каталога, который вы хотите удалить. Например, чтобы удалить каталог с именем dir1 , введите:

Если каталог не пустой, вы получите следующую ошибку:

В этом случае вам нужно будет использовать команду rm или вручную удалить содержимое каталога, прежде чем вы сможете его удалить.

Удаление каталогов с помощью rm

rm — это утилита командной строки для удаления файлов и каталогов. В отличие от rmdir команда rm может удалять как пустые, так и непустые каталоги.

По умолчанию при использовании без каких-либо параметров rm не удаляет каталоги. Чтобы удалить пустой каталог, используйте параметр -d ( —dir ), а для удаления непустого каталога и всего его содержимого используйте параметр -r ( —recursive или -R ).

Читайте также:  Как скопировать данные с ноутбука если windows не запускается

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

Если каталог или файл в каталоге защищен от записи, вам будет предложено подтвердить удаление. Чтобы удалить каталог без запроса, используйте параметр -f :

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

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

Чтобы удалить каталог, введите y и нажмите Enter .

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

Использование регулярных расширений при удалении каталогов может быть рискованным. Рекомендуется сначала перечислить каталоги с помощью команды ls чтобы вы могли видеть, какие каталоги будут удалены, прежде чем запускать команду rm .

Удаление каталогов с помощью find

find — это утилита командной строки, которая позволяет вам искать файлы и каталоги на основе заданного выражения и выполнять действие с каждым совпадающим файлом или каталогом.

Наиболее распространенный сценарий — использовать команду find для удаления каталогов на основе шаблона. Например, чтобы удалить все каталоги, которые заканчиваются на _cache в текущем рабочем каталоге, вы должны запустить:

Давайте проанализируем команду выше:

  • /dir — рекурсивный поиск в текущем рабочем каталоге ( . ).
  • -type d — ограничивает поиск каталогами.
  • -name ‘*_cache’ — искать только каталоги, заканчивающиеся на _cache
  • -exec — выполняет внешнюю команду с необязательными аргументами, в данном случае это rm -r .
  • <> + — добавляет найденные файлы в конец команды rm .

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

Чтобы удалить все пустые каталоги в дереве каталогов, выполните:

Вот объяснение используемых опций:

  • /dir — рекурсивный поиск в каталоге /dir .
  • -type d — ограничивает поиск каталогами.
  • -empty — ограничивает поиск только пустыми каталогами.
  • -delete — удаляет все найденные пустые каталоги в поддереве. -delete может удалять только пустые каталоги.

Используйте параметр -delete с особой осторожностью. Командная строка поиска оценивается как выражение, и если вы сначала добавите параметр -delete , команда удалит все, что находится ниже указанных вами начальных точек.

Всегда сначала проверяйте команду без опции -delete и используйте -delete в качестве последней опции.

/ bin / rm: слишком длинный список аргументов

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

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

Самое простое решение — сначала удалить все файлы в каталоге с помощью команды find а затем удалить каталог:

Выводы

С помощью rm и find вы можете быстро и эффективно удалять каталоги по различным критериям.

Удаление каталогов — простой и легкий процесс, но вы должны быть осторожны, чтобы не удалить важные данные.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Источник

Рекурсивное удаление каталога

Язык : си
Имеется вложенный каталог
Надо удалить его с помощью rmdir
Т.е. нужен специальный алгоритм , который построит дерево и пробежит его снизу вверх
Есть такое в природе или нужно изобретать велосипед ?

Читайте также:  Geforce gt 325m драйвер windows 10

Зы : rm -r не подходит .

Re: Рекурсивное удаление каталога

эээ. пардон, алгоритм чего именно? построения дерева 😕

Re: Рекурсивное удаление каталога

ну да
надо же сначала очистить каталог и прибить файлы

Re: Рекурсивное удаление каталога

Re: Рекурсивное удаление каталога

Re: Рекурсивное удаление каталога

Re: Рекурсивное удаление каталога

Категорически рекомендуется сделать две вещи:

1. добавить в условие ‘имя ne «.» && имя ne «..»‘

2. вместо реальных вызовов unlink/rmdir поставить printf(«unlink(%s)»)

Re: Рекурсивное удаление каталога

> Категорически рекомендуется сделать две вещи:

> 1. добавить в условие ‘имя ne «.» && имя ne «..»‘

> 2. вместо реальных вызовов unlink/rmdir поставить printf(«unlink(%s)»)

да, спасибо, забыл

Re: Рекурсивное удаление каталога

3. еще аккуратненько нужно с символическими ссылками

Re: Рекурсивное удаление каталога

Вобще еще есть такая штука как «info libc», там описывается функция ftw(), с опциями FTW_DEPTH и FTW_PHYS эта функиця даст нужный результат. Хотя иногда лучше не использовать готовые библиотечные решения.

Re: Рекурсивное удаление каталога

> Ща тебе ещё вилфред на перле сообразит наверное

Re: Рекурсивное удаление каталога

убить_каталог(каталог)
<
открыть каталог
по всем файлам(имена)
<
если каталог(имя)
убить_каталог(имя)
иначе
unlink(имя)
>
закрыть каталог
rmdir(каталог)
>

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

Re: Рекурсивное удаление каталога

> И при развесистой иерархии файловой системы, ты нагребешь кучу открытых дескрипторов каталогов.

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

Re: Рекурсивное удаление каталога

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

что мешает считать сожержимое директории, закрыть её и потом обработать? IMHO каталоги с десятками или сотнями тысяч записей — это скорее редкость, чем правило.

Re: Рекурсивное удаление каталога

> И при развесистой иерархии файловой системы, ты нагребешь кучу открытых дескрипторов каталогов.

на каждом уровне вложенности только один дескриптор открывается, т.е. если у тебя 1000 вложенных друг в друга каталогов, то это плохо

Re: Рекурсивное удаление каталога

Re: Рекурсивное удаление каталога

Ну если уж пишется действительно что то нужное, то может проще взять исходники команды rm и скопировать соответствующие подпрограммы. Инчае зачем нужен GPL, если не копировать куски исходного текста :).

Потому что если поковыряться в исходых текстах rm, то, например, там есть такое, что lstat() вызывается дважды, до смены каталога и после (на текущий каталог), и сравниваются полученные номера инодов.

Re: Рекурсивное удаление каталога

> зачем нужен GPL, если не копировать куски исходного текста

зачем нужен unix если копировать куски исходного текста вместо system(«rm -rf . «)

Re: Рекурсивное удаление каталога

> зачем нужен unix если копировать куски исходного текста вместо system(«rm -rf . «)

Хватит учить детей анонизму

Re: Рекурсивное удаление каталога

>пишу консольный файловый менеджер >rm -r не подходит

Не юниксвэй. А вы слуайно не быдлокодер, я извиняюсь?

Re: Рекурсивное удаление каталога

> Не юниксвэй. А вы слуайно не быдлокодер, я извиняюсь?

как раз system(«rm -rf») — путь истинного быдла

Re: Рекурсивное удаление каталога

> Ну если уж пишется действительно что то нужное, то может проще взять исходники команды rm и

я так и сделал — выдрал исходники rm из пакета fileutils
работает фантастически быстро , размер вложенного каталога пофиг

Источник

Оцените статью