Перейти к основному содержанию
Скидка 50% все планы, ограниченное время. Начиная от $2.48/mo
12 min left
Серверы и ОС

Как безопасно удалить каталог в Linux: rmdir, rm -r, find

Nick Silver Автор: Nick Silver 12 мин чтения Обновлено Sep 22, 2025
A lone ultrareal laptop at 3/4 angle on a wet surface; screen shows two crisp terminal lines: ls -ld -- '$DIR' rm -I -r -- '$DIR' From the right-side port, a cyan/magenta holographic ribbon curves out to a manila folder floating to the right of the laptop; the folder’s right half frays into fine paper dust mid-air. BR2049 lighting, UV rim, subtle rain specks, sodium-amber haze + single low skyline only.

Правильная команда делает удаление папок в Linux простым делом. Используйте rmdir для пустых путей, rm -r для директорий с содержимым, и найдите когда нужно очистить только содержимое. Вот как удалить директорию в Linux, с безопасными настройками по умолчанию, быстрой проверкой и исправлением ошибок, которые могут помешать. Если нужно быстро разобраться, взгляните на сводную таблицу, а затем читайте дальше о мерах предосторожности.

 

 

Обзор команд: скопируй, применяй, двигайся дальше

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

Задача Самая безопасная быстрая команда Дополнительные флаги и примечания
Удалить пустую директорию rmdir ПАПКА or rm -d DIR Добавьте -p чтобы удалить родительские директории, если они тоже окажутся пустыми.
Удалить непустую директорию с одним запросом подтверждения rm -I -r DIR Оптимальный баланс скорости и безопасности.
Принудительно удалить непустую директорию rm -rf — DIR Проверьте с помощью ls -ld — DIR перед запуском.
Сохранить папку, очистить содержимое find DIR -mindepth 1 -delete Удаляет также скрытые файлы и папки.
Удалить только пустые директории найти DIR -type d -empty -delete Удобно запускать после деплоя.
Удалить по шаблону имени find DIR -type d -name 'cache*' -prune -exec rm -rf {} + Быстро работает на больших деревьях каталогов.

Держите эту шпаргалку под рукой, пока разбираетесь, как удалить директорию в Linux. 

Удаление пустых директорий с помощью rmdir or rm -d

Ultrareal steel file-cabinet drawer pulled fully open, rails and felt pads visible, absolutely empty. Tiny embossed stickers on the front: RMDIR and EMPTY. A soft sodium-amber haze drifts behind a faint skyline silhouette; cyan signage glints along the brushed metal lip; micromotes and hairline scratches read true.

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

  • rmdir PROJECT/tmp удаляет пустую папку и завершается без вывода, если она больше не существует.
  • rmdir -p foo/bar/baz удаляет путь, а затем родительские директории, если каждая из них стала пустой — одной командой убирает всё scaffolding.
  • rm -d empty_folder удаляет только пустую директорию — аналог rmdir для тех, кто работает на rm.
  • rmdir –ignore-fail-on-non-empty DIR скрывает сообщение об ошибке «не пуста» в скриптах, где лишний вывод нежелателен.
  • Добавьте -v для обратной связи, например, rmdir -pv foo/bar/baz.

Типичная проблема при попытке удалить директорию в Linux: если в папке ещё есть файлы, rmdir команда не выполнится. Это сигнал перейти к рекурсивному удалению. 

Читайте также: Подключитесь к серверу Linux с помощью XRDP

Удаление непустых директорий с помощью rm

Ultrareal industrial paper shredder as the single hero; mouth loaded with multiple manila folders and dividers. The folders are clearly stuffed with paper. A tiny metal badge on the front reads RM -R; a small hazard triangle beside it reads FORCE.

Рекурсивное удаление — это rm -r or rm -rf. Компромисс здесь простой: скорость против подтверждений. Те, кто только учится удалять непустые директории в Linux, начинают с rm -r и добавьте промпт. Команды, которые автоматизируют, добавляют -f после того как фиксируют проверки пути.

Начните с режимов, которые дают уверенность:

  • Промпт один раз: rm -I -r DIR спрашивает один раз перед рекурсивным спуском — удобнее, чем -i на больших деревьях каталогов.
  • Промпт на каждый файл: rm -ri DIR работает медленно, но наглядно на небольших деревьях, когда нужно видеть каждый шаг.
  • Принудительное рекурсивное удаление: rm -rf DIR пропускает запросы подтверждения и большинство ошибок; проверяйте через pwd, ls -ld — DIR, и echo "$DIR" перед тем как нажать Enter.
  • Подробный вывод: -v печатает каждый удалённый путь, например, rm -rfv build/.
  • Защита корня и точек монтирования: современные системы блокируют rm -rf / через –preserve-root; в скриптах добавляйте –один-файловая-система чтобы не выйти за пределы точки монтирования.

Перед принудительным удалением на рабочей машине потратьте полминуты на проверку цели. Убедитесь в правильности пути с помощью ls -ld — "$DIR", затем обратите внимание на кавычки и glob-шаблоны. Лучший способ разобраться, как удалить директорию в Linux — попробовать -I сначала в интерактивном режиме, а затем повторить без него. Спокойная проверка, повторяемые привычки.

linux-vps Хостинг на Linux без сложностей

Ищете более удобный способ хостить сайты и веб-приложения? Разрабатываете что-то новое? Просто не любите Windows? Поэтому у нас есть Linux VPS.

Получите ваш Linux VPS

Необычные имена, ведущие дефисы и скрытые проблемы

A stretch of caution tape pulled taut across frame, ultrareal vinyl texture with subtle wrinkles. Black print repeats -TMP at intervals after each CAUTION.

Некоторые пути начинаются с дефиса или содержат байты, которые сбивают парсер. Передайте чтобы завершить разбор опций, или добавьте ./ перед именем.

Безопасная работа с нестандартными именами:

rm -r -- --weird
rm -r ./-cache

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

Сохранить папку, очистить содержимое

Ultrareal manila folder with a small bottom trapdoor built into the tab-side corner, hinged and slightly open so a faint stream of holographic “file shards” falls away. Etched on the tab: FIND and MIND1 (for -mindepth 1)

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

  • Пропустить родительскую директорию с помощью найдите:
find /var/tmp/app -mindepth 1 -delete
  • Или выполнить rm для группы файлов:
find ./cache -mindepth 1 -exec rm -rf {} +

Оба варианта обрабатывают скрытые записи (включая dotfiles), которые пропускает простая команда rm * Если вам нужно удалить все файлы в директории Linux — это надёжный способ.

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

Читайте также: Список запущенных служб в Linux

Точечное удаление с помощью найдите: имена, глубина, исключения

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

Задача Краткая справка по командам Примечания
Только удаление cache*/ директории в проекте find . -type d -name 'cache*' -prune -exec rm -rf {} + -prune не заходит в найденные директории рекурсивно — быстрее работает на больших деревьях файлов.
Удаление директорий по глубине find ./dist -mindepth 1 -maxdepth 1 -type d -exec rm -rf {} + Затрагивает только дочерние элементы первого уровня в dist/.
Удаление только пустых директорий find . -type d -empty -delete Удобно запускать после деплоя.
Удаление файлов по шаблону find logs -type f -name '*.gz' -delete Свежие логи остаются нетронутыми.
Удалить всё содержимое, сохранив родительскую директорию find /data/tmp -mindepth 1 -delete Сервисы продолжают использовать родительскую директорию.

Используйте -print для пробного запуска, а затем уберите его для реального. Это и есть практическая сторона удаления директорий на Linux: предсказуемая область действия при быстром выполнении. Gotcha, на некоторых минимальных сборках BusyBox флаг -delete отсутствует — используйте -exec rm -rf {} + вместо него.

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

Меры защиты от случайных ошибок

An ultrareal lockout/tagout padlock + hasp assembly as the lone hero, brushed steel and scuffed red enamel, bead of condensation on the shackle; a fiber safety tag hangs from the hasp with three bold engravings: RM -I, ONE FS, PRESERVE ROOT.

Мощные команды требуют осторожных настроек по умолчанию. Выработайте эти привычки, чтобы удаление директории в Linux с помощью команд не лишало вас рассудка.

  • Предпочтите один запрос с rm -I -r DIR пока проверяете путь на экране.
  • Всегда берите пути в кавычки: rm -rf — "$DIR" защищает от пробелов, glob-шаблонов и имён, начинающихся с дефиса.
  • Убедитесь в точности цели: ls -ld — "$DIR" выводит одну строку с режимом, владельцем и путём.
  • Оставаясь в пределах файловой системы: rm -rf –one-file-system "$DIR" предотвращает переход на примонтированные тома.
  • Оставьте защиту root включённой, сохраните –preserve-root на месте.
  • Снимайте бит неизменяемости при необходимости: lsattr -d "$DIR" для проверки, chattr -i "$DIR" для его снятия.

Если удаление всё ещё не удаётся или зависает, проверьте привычные подозреваемые.

Запускайте тесты очистки на Linux VPS от Cloudzy и продолжайте создавать

Ultrareal 1U rack server sits firmly on a cloud (cloud = VPS). A short SFP+ fiber patch links the server to an open laptop at 3/4 angle. On the laptop’s glassy terminal, two big stacked engravings: RM -I -R and ROLLBACK (toggle dot lit). On the rack face, small badges: NVME, 10 GBPS, DDR5.

Если вам нужен стабильный удалённый сервер для безопасного тестирования rm, rmdirи найдите запустите Linux VPS хостинг и работать в чистой оболочке. Это доступно по цене, быстро и доступно в 13 регионов с 11 дистрибутивах Linux готово к работе. Вы получаете root, хранилище NVMe SSD хранилище и DDR5 RAM на современных тарифах, а также защита DDoS и Аптайм 99,95% без долгосрочных обязательств. Высокая пропускная способность и низкая задержка входят в пакет, со скоростью соединения до 10 Gbps указано в карточках тарифов.

  • Глобальная инфраструктура: развёртывайте серверы в более чем 12 локациях, включая Нью-Йорк, Лос-Анджелес, Майами, Амстердам, Лондон, Германию, Швейцарию, Юту, Даллас, Лас-Вегас и Сингапур — ближе к вашим пользователям.
  • Root-доступ + 11 дистрибутивов: выберите нужный Linux и сохраняйте полный контроль с первого дня.
  • Современное железо: хранилище NVMe SSD и процессоры DDR5 RAM обеспечивают стабильную производительность даже при высокой нагрузке I/O.
  • Сеть и доступность: низкая задержка, высокая пропускная способность и целевой показатель uptime 99,95% помогают запланированным задачам выполняться точно по расписанию.
  • Безопасность: защита DDoS включена для всех серверов, так что плановое обслуживание с меньшей вероятностью прервёт работу.
  • Удобство: предустановленные ОС, бесплатный IPv6 и несколько способов оплаты делают настройку простой.

Предпочитаете полноценный рабочий стол? При оформлении заказа выберите Linux RDP приложение в один клик. Вы получите Linux VPS с XRDP, GDM3, а также GNOME GUI интерфейс предустановленным на Ubuntu, поэтому вы можете подключиться удалённо в один клик. Работает в тех же 12 локациях и сохраняет Аптайм 99,95% цель. При этом никаких дополнительных платежей за предустановленную конфигурацию RDP.

Коротко: запустите доступный Linux VPS, выберите дистрибутив, сохраните root-доступ и, при необходимости, добавьте рабочий стол Linux RDP при покупке. Затем практикуйте удаление в интерактивном режиме, делайте снимки и повторяйте, пока набор команд не станет привычным.

Устранение проблем: «Отказано в доступе», «Директория не пуста», занятые пути

A single ultrareal folder perched over a narrow chute (this chute symbolizes troubleshooting, so engrave it with a troubleshooting icon); inside it, smaller sub-folders and faint .dotfiles icons fade as they drop. Lip engravings top-to-bottom on the chute: SYMPTOM, CHECK, FIX; opposite side: NOT EMPTY, LOOK, FIND -DELETE.

Большинство сбоев укладываются в несколько типичных сценариев. Используйте этот подход: симптом → проверка → исправление, чтобы удаление директории в Linux не блокировало деплой.

1) «Permission denied» для директории, которой вы владеете
Проверьте атрибуты командой lsattr -d DIR. Если установлен флаг immutable, i снимите его командой sudo chattr -i DIR, затем повторите попытку. Такое встречается на защищённых системах и в некоторых контейнерах.

2) «Operation not permitted» даже с sudo
Убедитесь, что точка монтирования не находится в режиме только для чтения. mount | grep DIR or findmnt DIR покажет текущее состояние. Перемонтируйте в режим записи или выберите другой путь.

3) «Directory not empty» после rmdir
Записи всё ещё существуют. Используйте:

find DIR -mindepth 1 -delete

Команда учитывает скрытые файлы и вложенное содержимое.

4) Сервис воссоздаёт папку
Запущенный процесс пишет по этому пути. Остановите или корректно перезапустите его, затем удаляйте. Если окружение неисправно, обратитесь к руководству по systemctl команда не найдена поможет сначала разобраться с этим. Для примера: у нас был Nginx, который писал в /var/log/nginx/ на тестовом сервере; после остановки nginx.service очистилось lsof, удаление прошло успешно, и логи снова начали писаться нормально.

5) «Device or resource busy»
Какой-то процесс держит открытый дескриптор внутри директории. lsof +D КАТАЛОГ or fuser -vm КАТАЛОГ показывает, что активно. Остановите процесс корректно, затем удаляйте. Если нужно быстро проверить сокеты перед очисткой логов, обратитесь к разделу Linux команда Netstat — там описана быстрая проверка.

6) Странные имена: пробелы, переносы строк или начальный дефис
Используйте or ./ перед именами, начинающимися с дефиса, и берите каждую строку в кавычки. Для массовой очистки файлов с нестандартными именами используйте find . -print0 | xargs -0 — тогда пробелы не сломают команду.

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

Корзина вместо удаления: trash-cli и Корзина

Ultrareal blue desktop recycling bin (matte polymer with tiny injection marks, slot opening), a folded paper folder edge peeking at the slot. Etched along the lip: TRASH-CLI, TRASH. A small side badge glows RESTORE to suggest reversal.

Не всё нужно удалять навсегда. Графические окружения и серверы с поддержкой GLib умеют работать с корзиной — можно просмотреть файлы и восстановить их при необходимости. Если вы только изучаете, как удалить директорию в Linux, и хотите подстраховаться, попробуйте следующее:

  • gio trash ПУТЬ перемещает файлы и директории в корзину; gio list trash:// позволяет просматривать содержимое корзины.
  • При том, что trash-cli, используйте удалить PATH, trash-list, trash-restoreи trash-empty для простого рабочего процесса в командной строке.

Он медленнее, чем rm, но дополнительный шаг подтверждения оправдывает себя, если нужна пауза перед удалением. Так что, если вы хотите узнать, как удалить директорию в Linux без риска потерять реальные данные, начните с trash, а затем переходите к rm.

Итоги

Теперь у вас есть полный набор инструментов для удаления директорий в Linux, в который входят rmdir для пустых путей, rm -I -r для безопасной рекурсии, rm -rf только после проверки целевой директории, и find -mindepth 1 -delete когда нужно очистить содержимое, не удаляя саму папку. Заключайте пути в кавычки, используйте –preserve-root, работайте в пределах одной файловой системы и снимайте атрибут неизменяемости, если он блокирует удаление — остальное покрывают шаги по устранению неполадок.

И не забывайте: если вам нужен чистый удалённый сервер для практики в реальных условиях, запустите Cloudzy Linux VPS сервер — доступный и надёжный для безопасных тестов. А благодаря нашей однокликовый Linux RDP вы также получаете графическую сессию рабочего стола, в которой можно пошагово выполнять удаление через полноценный GUI.

 

Часто задаваемые вопросы

В чём разница между rm и rmdir?

rmdir удаляет только пустые директории и может удалять родительские каталоги, ставшие пустыми, с флагом -p. rm удаляет файлы и директории: добавьте -r для рекурсии и -I или -i для подтверждения перед удалением.

Как принудительно удалить папку со всем содержимым?

Используйте rm -rf — DIR после проверки пути. Добавьте -v, если нужен построчный журнал операций. Некоторые администраторы предварительно делают тестовый проход с rm -I -r перед финальным запуском.

Как удалить содержимое директории, не удаляя её саму?

Выполните find DIR -mindepth 1 -delete. Эта команда очищает директорию в Linux, сохраняя родительскую папку — что важно для корректной работы сервисов.

Почему rmdir говорит «Directory not empty», когда я не вижу файлов?

В директории есть скрытые файлы. Команда ls -A их покажет — после этого используйте паттерн find -mindepth 1 -delete.

Как исправить «Operation not permitted» или «Permission denied»?

Проверьте флаг неизменяемости командой lsattr -d DIR и снимите его через sudo chattr -i DIR, если он установлен. Также убедитесь, что раздел не смонтирован в режиме только для чтения. Если сервис заново создаёт пути во время очистки, сначала разберитесь с проблемой в юните — ссылка на раздел про systemctl выше поможет.

Share

Ещё в блоге

Читайте дальше.

Готовы к развёртыванию? От $2,48/мес.

Независимое облако с 2008 года. AMD EPYC, NVMe, 40 Gbps. Возврат денег в течение 14 дней.