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

Удаление каталога в Linux

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

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

Прежде чем начать

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

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

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

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

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

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

 rmdir dir1

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

 rmdir: failed to remove 'dir1': No such file or directory

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

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

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

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

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

 rm -r dir1

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

 rm -rf dir1

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

 rm -r dir1 dir2 dir3

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

 rm -rI dir1

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

 rm: remove 1 argument recursively? y

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

 rm -r *_bak

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

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

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

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

 find . -type d -name '*_cache' -exec rm -r {} +

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

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

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

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

 find /dir -type d -empty -delete

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

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

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

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

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

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

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

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

 find /dir -type f -delete && rm -r /dir

Заключение

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

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

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

rm rmdir find terminal

Связанные руководства

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *