Введение
Существует несколько способов удаления каталогов (папок, путей) и файлов в системах Linux. Если вы используете настольный файловый менеджер, такой как Gnome Files или Dolphin из KDE, вы можете удалять файлы и каталоги с помощью графического пользовательского интерфейса менеджера. Но если вы работаете на сервере или хотите удалить сразу несколько каталогов, лучший вариант — удалить каталоги (пути) из командной строки. В этой статье мы объясним, как удалять каталоги в Linux с помощью команд rmdir, rm и find.
Прежде чем начать Когда вы удаляете каталог с помощью файлового менеджера рабочего стола, этот каталог фактически перемещается в корзину и может быть легко восстановлен. При удалении файлов или каталогов из командной строки их нельзя полностью восстановить. В большинстве файловых систем Linux для удаления каталога требуется разрешение на запись в каталог и его содержимое. В противном случае будет отображаться ошибка «Операция не разрешена».
Как удалить папки с помощью rmdir
rmdir — утилита командной строки для удаления пустых каталогов. Это полезно, когда вы хотите удалить каталог, только если он пуст. Чтобы удалить каталог с помощью rmdir, введите команду, за которой следует имя каталога, который вы хотите удалить. Например, чтобы удалить каталог с именем dir1:
rmdir dir1
Если каталог не пуст, будет отображаться следующая ошибка:
rmdir: failed to remove 'dir1': Directory not empty
В этом случае вам нужно будет использовать команду 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
Вы также можете использовать обычные расширения для сопоставления и удаления нескольких каталогов. Например, чтобы удалить все каталоги верхнего уровня в текущем каталоге, оканчивающемся на _bk, используйте следующую команду:
rm -r * _bk
Использование обычных расширений при удалении каталогов может быть рискованным. Рекомендуется сначала составить список каталогов с помощью команды ls, чтобы вы могли видеть, какие каталоги будут удалены, прежде чем запускать команду rm.
Как удалить папки с помощью find
find — это утилита командной строки, которая позволяет искать файлы и каталоги на основе заданного выражения и выполнять действие над каждым соответствующим файлом или каталогом. Наиболее распространенным сценарием является использование команды find для удаления каталогов на основе шаблона. Например, чтобы удалить все каталоги, оканчивающиеся на _cache в текущем рабочем каталоге, вы должны запустить:
find. -type d -name '*_cache' -exec rm -r {} +
Давайте разберем приведенную выше команду:
- . - рекурсивный поиск в текущем рабочем каталоге (.).
- -type d - ограничить поиск каталогами.
- -name '*_cache' - искать только каталоги, заканчивающиеся на _cache.
- -exec — выполнить внешнюю команду с необязательными аргументами, в данном случае это rm -r.
- {} + — добавляет найденные файлы в конец команды rm.
Как удалить пустые папки
Чтобы удалить все пустые каталоги в дереве каталогов, вы должны использовать:
find /dir -type d -empty -delete
Вот объяснение используемых опций:
- /dir — рекурсивный поиск в каталоге /dir.
- -type d - ограничить поиск каталогами.
- -empty - ограничить поиск только пустыми каталогами.
- -delete - удалить все пустые каталоги, найденные в поддереве. -delete может удалять только пустые каталоги. Используйте параметр -delete с особой осторожностью.
Используя команду rm, вы можете получить сообщение, подобное следующему:
/bin/rm: Argument list too long
Это сообщение об ошибке появляется при использовании команды rm для удаления каталога, содержащего огромное количество файлов. Это происходит из-за того, что количество файлов превышает системный лимит. Есть несколько решений этой проблемы. Например, вы можете перейти в каталог и либо вручную, либо с помощью цикла удалить подкаталоги по одному. Самое простое решение — сначала удалить все файлы в каталоге с помощью команды find, а затем удалить каталог:
find /dir -type f -delete && rm -r /dir
Вывод
С помощью rm and find вы можете быстро и эффективно удалять каталоги на основе различных критериев. Удаление каталогов — простой и легкий процесс, но вы должны быть осторожны, чтобы не удалить важные данные.