Пользователи Linux иногда сталкиваются с ситуацией, когда нужно почистить определенный каталог, удалив из него старые, неиспользуемые файлы. Через стандартный проводник это делать далеко не всегда удобно. Но данную процедуру очень просто выполнять через терминал.
По ходу данной статьи мы разберемся с удалением файлов старше определенного количества дней в Ubuntu. Заодно объясним некоторые нюансы этой процедуры.
Удаление файлов старше n дней в Linux
Для терминала Ubuntu существует специальная команда find, которая отвечает за поиск файлов на компьютере. А с помощью опции -mtime получится найти только те файлы, дата изменения которых старше заданного временного промежутка. В качестве примера возьмем каталог Downloads и срок в 35 дней.
Откройте терминал и запустите следующую команду:
find ~/Downloads -type f -mtime +35
В результате вы увидите полный список файлов в выбранном каталоге, которые соответствуют заданному критерию. Не забудьте только поменять местоположение и временной промежуток по своему усмотрению. Заодно убедитесь, что в списке нет важных данных, которые могут быть стерты.
Следующий шаг – непосредственно чистка:
find ~/Downloads -type f -mtime +35 -delete
Вам необязательно действовать напрямую и стирать сразу же все файлы. Их можно отсортировать дополнительно по еще одному признаку, например, по названию или расширению. Для этого есть опция -name, которая прописывается сразу же после директории. Если нужно избавиться только от zip-архивов, то подойдет такая команда:
find ~/Downloads -name "*.zip" -type f -mtime +35 -delete
Ну и напоследок хотелось бы упомянуть, что при запуске терминала Ubuntu из конкретной папки вручную директорию прописывать не придется. Это можно сделать через стандартное приложение Файлы, если перейти к нужному каталогу, кликнуть правой клавишей мыши по пустому месту и в контекстном меню выбрать пункт Открыть в терминале.
Тогда команда для поиска, если она еще нужна, сократится до следующего варианта:
find -type f -mtime +35
А для удаления не забудьте в конце дописать опцию -delete:
Выводы
По ходу данной статьи мы вкратце объяснили, как можно в конкретном каталоге отыскать файлы старше определенного возраста через терминал Ubuntu, а также как удалить файлы старше n дней linux. Сама по себе процедура довольно простая, но может сэкономить много времени при чистке уже ненужных данных с компьютера.
А можно ли этой командой также удалять и каталоги совместно с файлами? Например, у меня в Temp находятся куча ненужных файлов и каталогов. Нужно удалить файлы и каталоги старше 30 дней после их создания.
-type f – простые файлы
d – каталоги
Только есть нюанс... Непустые директории оно так не удаляет.
Всё это можно написать в скрипт, сделать его исполняемым и положить в папку(и) по надобности периода очистки в:
/etc/cron.hourly - каждый час
/etc/cron.weekly - раз в неделю
/etc/cron.monthly - раз в месяц
и т.д...
И Cron будет сам всё делать...
А можно ли добавить команду запроса перед удалением?
И куда оно должно из консоли этот запрос отправлять?
Отличная статья!!!
А нету случайно допопции к команде, чтобы она не искала в поддиректориях, а только в корне указанной директории? Буду очень признателен!
Короче - команда по-умолчанию рекурсивная, и поэтому отрабатывает и в подпапках! Если хотите отключить рекурсивный режим, то после указания пути добавьте -maxdepth 1
Пример:
find /home/usr/INSTALL -maxdepth 1 -type f -mtime +4
Как можно удалить все папки, кроме тех которые являются папкой ссылкой.
Я заметил - у них все статьи качественные
find ./ -maxdepth 1 -type d -mtime +27 | xargs rm -rf (Удаляет не пустые каталоги)