linux файлы

rmdir

Удалить пустые директории

← Урок 02: Первые команды — урок где команда введена

Описание

rmdir (от remove directory) — утилита GNU coreutils для удаления пустых директорий. В отличие от rm -r, rmdir откажется удалять директорию, если в ней есть хоть один файл или поддиректория — это делает её безопасным инструментом для работы с временными и рабочими папками.

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

Для удаления непустых директорий используется rm -r — но только осознанно, так как эта операция необратима.

Синтаксис

rmdir [ОПЦИИ] ДИРЕКТОРИЯ...

Компоненты команды:

# Удалить одну пустую директорию rmdir mydir # Удалить несколько пустых директорий сразу rmdir dir1 dir2 dir3 # Удалить цепочку пустых директорий rmdir -p a/b/c

Флаги и опции

Флаг Описание
-p Удалить директорию и все пустые родительские директории в указанном пути. Например, rmdir -p a/b/c удалит c, затем b, затем a — при условии что каждая пуста
--ignore-fail-on-non-empty Не выводить ошибку, если директория непуста — просто пропустить её. Полезно в скриптах, когда нужно убрать уже пустые директории без завершения по ошибке
-v Verbose — выводить имя каждой обрабатываемой директории
--help Показать справку и выйти
--version Показать версию утилиты и выйти

Паттерны использования

Удалить пустую папку

Базовое применение — убрать временную пустую директорию.

mkdir /tmp/test_dir
rmdir /tmp/test_dir
# Директория удалена

# Если не пуста — получим ошибку:
mkdir /tmp/test2
touch /tmp/test2/file.txt
rmdir /tmp/test2
# rmdir: failed to remove '/tmp/test2': Directory not empty

Удалить цепочку пустых папок

Флаг -p убирает всю вложенную структуру пустых директорий за один вызов.

# Создаём цепочку
mkdir -p a/b/c

# Удаляем всю цепочку сразу
rmdir -p a/b/c
# Удалит: a/b/c, потом a/b, потом a
# (только если каждая директория пуста)

rmdir против rm -r — когда что использовать

rmdir безопаснее: удаляет ТОЛЬКО пустые директории. Выбирайте по ситуации.

# rmdir — безопасно, только пустые:
rmdir /tmp/empty_dir

# rm -r — удаляет всё содержимое рекурсивно.
# Используйте ТОЛЬКО осознанно — операция необратима!
rm -r /tmp/non_empty_dir

# rm -rf — без подтверждений, крайняя мера:
# rm -rf /tmp/non_empty_dir

В скриптах с флагом --ignore-fail-on-non-empty

Попытка очистить временные директории без прерывания скрипта на ошибке.

#!/bin/bash
# Убираем временные директории после работы
# (если не опустели — не беда, просто пропустим)
rmdir --ignore-fail-on-non-empty \
  /tmp/workdir_1 \
  /tmp/workdir_2 \
  /tmp/workdir_3
echo "Очистка завершена"

Советы и предупреждения

rmdir удаляет ТОЛЬКО пустые директории
Если в директории есть хоть один файл или поддиректория — rmdir выдаст ошибку "Directory not empty" и ничего не удалит. Это защита, а не ограничение. Для удаления директорий с содержимым используйте rm -r — но делайте это осознанно, так как удалённые файлы восстановить стандартными средствами нельзя.
rmdir vs rm -d
Команда rm -d (или rm --dir) — аналог rmdir: тоже удаляет только пустые директории, но является частью команды rm. На практике предпочтение зависит от контекста: rmdir -p удобнее для цепочек, rm -d — когда уже используете rm для файлов рядом.