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

How to Remove (Delete) Directory in Linux

22 Апреля 2020 | Терминал

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

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

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


Прежде чем вы начнете 

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

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

В большинстве файловых систем 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 -rI dir1 

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 вы можете удалять каталоги на основе различных критериев быстро и эффективно.

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



    Комментарии

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

Загрузка комментариев...