Глиф Учебники

Как удалить папку в Linux

Справочник · Командная строка Linux · 2 минуты чтения

Пустую папку:

Bash
rmdir old-folder

Папку со всем содержимым:

Bash
rm -r old-folder

rmdir удаляет только пустую папку и откажется, если внутри что-то есть, — поэтому он безопасен. rm -r (recursive) удаляет папку вместе со всеми файлами и вложенными папками. Если у части файлов нет права записи, rm -r спросит про каждый; rm -rf удаляет без вопросов.

В терминале нет корзины: rm -r и rm -rf удаляют сразу и навсегда. Лишний пробел в пути (rm -rf ~/ old вместо rm -rf ~/old) удалит всю домашнюю папку, а с sudo такая же ошибка уничтожает систему. Перед удалением посмотрите тот же путь через ls и только потом меняйте ls на rm -r.

Как удалять безопаснее

Bash
ls -la old-folder
rm -rI old-folder
rm -ri old-folder

Удалить содержимое, но оставить папку

Bash
rm -r old-folder/*
find old-folder -mindepth 1 -delete

Первая строка не тронет скрытые файлы (с точкой в начале имени). Вторая удалит всё внутри, включая скрытые, а саму папку оставит.

Внимательно с переменными в путях. Если переменная dir пустая, rm -rf "$dir"/* превращается в rm -rf /*. В скриптах пишите rm -rf "${dir:?}"/* — тогда bash остановится с ошибкой, если переменная пуста.

Ошибки

Корзина рабочего стола

Если нужна возможность вернуть файлы, удаляйте в корзину рабочего стола: в Ubuntu, Mint и других системах с рабочим столом обычно есть команда gio trash old-folder. Восстановить файлы можно через корзину в файловом менеджере.