Есть несколько различных способов удаления каталогов в системах Linux. Если вы используете файловый менеджер рабочего стола, такой как Gnome’s Files или KDE’s Dolphin, вы можете удалять файлы и каталоги с помощью графического пользовательского интерфейса менеджера. Но если вы работаете на автономном сервере или хотите удалить сразу несколько каталогов, лучшим вариантом является удаление каталогов (папок) из командной строки.
В этой статье мы объясним, как удалять каталоги в 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 -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
с особой осторожностью. Командная строка поиска оценивается как выражение, и если вы сначала добавите параметр -delete
, команда удалит все, что находится ниже указанных вами начальных точек.
Всегда сначала проверяйте команду без опции -delete
и используйте -delete
в качестве последней опции.
/ bin / rm: слишком длинный список аргументов
Это сообщение об ошибке появляется, когда вы используете команду rm
для удаления каталога, содержащего огромное количество файлов. Это происходит из-за того, что количество файлов превышает системное ограничение на размер аргумента командной строки.
Есть несколько разных решений этой проблемы. Например, вы можете cd
в каталог и вручную или с помощью цикла для удаления Подкаталогов один за другим.
Самое простое решение — сначала удалить все файлы в каталоге с помощью команды find
а затем удалить каталог:
find /dir -type f -delete && rm -r /dir
Выводы
С помощью rm
и find
вы можете быстро и эффективно удалять каталоги по различным критериям.
Удаление каталогов — простой и легкий процесс, но вы должны быть осторожны, чтобы не удалить важные данные.
Добавить комментарий