Гид по технологиям

Автоочистка папки: удаление старых файлов с помощью find

• 4 min read • Linux • Обновлено 16 Nov 2025
Удаление старых файлов с find и автоматизация
Удаление старых файлов с find и автоматизация

Зачем это нужно

Если вы храните временные файлы на рабочем столе или в любой другой папке и забываете их удалять, папка быстро заполняется ненужными элементами. Ручная очистка утомительна. Команда find позволяет автоматически находить старые файлы и удалять их по расписанию.

Базовая команда

Основной приём — использовать find с критериями по времени и действием через -exec. Общая форма команды:

find /path/to/directory -type f -mtime +N -exec rm -f {} \;

Где:

  • /path/to/directory — абсолютный путь к папке;
  • -type f ограничивает поиск файлами (не директориями);
  • -mtime +N — файлы старше N дней (см. ниже альтернативы);
  • -exec rm -f {} \; — удалить каждый найденный файл (в GNU find можно использовать -delete).

Пример: удалить файлы в Pictures старше 1 дня:

find /home/damien/Pictures -type f -mtime +1 -exec rm -f {} \;

Важно: перед реальным удалением сначала выполните команду без -exec, чтобы увидеть список файлов:

find /home/damien/Pictures -type f -mtime +1 -print

Пояснение критериев времени и опций

  • -mtime — критерий в днях, целые числа. +5 — более 5 дней, -5 — 5 или менее дней, 5 — ровно 5 дней.
  • -mmin — критерий в минутах (полезно для более частых проверок).
  • Комбинация “+5 -10” в терминах find должна реализовываться через логические выражения (см. примеры).
  • -delete — альтернативный вариант удаления, быстрее и чище, но не поддерживается во всех реализациях find.

Пример диапазона (более 5 дней и менее 10 дней):

find /path -type f -mtime +5 -a -mtime -10 -print

Безопасность и рекомендации

Важно: всегда проверяйте результаты команд без удаления. Используйте -print или перенаправьте вывод в файл для ревью.

  • Делайте резервные копии важных папок прежде чем запускать массовое удаление.
  • Отдавайте предпочтение точным путям и -type f, чтобы не удалить директории или системные файлы.
  • Если используете -exec, экранируйте точку с запятой как \; в скриптах и документах.

Дополнительные варианты действий

  • Вместо rm можно использовать mv для перемещения старых файлов в архивную папку.
  • Вместо find можно применять специализированные утилиты: tmpreaper, tmpwatch (для временных директорий).
  • Для большого количества файлов стоит использовать xargs для повышения эффективности:
find /path -type f -mtime +30 -print0 | xargs -0 rm -f

Автоматизация процесса

Ниже приведены три распространённых подхода: автозагрузка, cron и systemd timer.

1. Запуск при входе в систему

Создайте скрипт, например в домашней папке: «find-and-delete».

#!/bin/bash

find /path/to/directory -type f -mtime +N -exec rm -f {} \;

Сделайте файл исполняемым (в проводнике или через chmod +x). В GNOME добавьте его в Приложения при запуске.

Окно свойств файла с вкладкой Разрешения для разрешения выполнения

2. Cron

Откройте crontab для текущего пользователя:

crontab -e

Строка crontab имеет структуру:

минуты часы день-месяца месяц день-недели команда

Чтобы запускать скрипт каждый час в начале часа, добавьте:

0 * * * * /path/to/find-and-delete

Окно редактирования crontab

Сохраните и выйдите. Cron запустит задачу от имени вашего пользователя.

3. systemd timer (рекомендуется на современных дистрибутивах)

systemd таймеры дают гибкость и удобные логи. Создайте два файла в ~/.config/systemd/user/:

Файл сервиса ~ /home/USER/.config/systemd/user/find-and-delete.service

[Unit]
Description=Find and delete old files

[Service]
Type=oneshot
ExecStart=/home/USER/find-and-delete

Файл таймера ~ /home/USER/.config/systemd/user/find-and-delete.timer

[Unit]
Description=Run find-and-delete hourly

[Timer]
OnCalendar=hourly
Persistent=true

[Install]
WantedBy=timers.target

Активируйте таймер:

systemctl --user enable --now find-and-delete.timer

Gnome Schedule

Если терминал пугает, Gnome Schedule — графический планировщик заданий для похожих задач.

Интерфейс Gnome Schedule для планирования заданий

Тестовые сценарии и критерии приёмки

  • Тест 1: dry-run — команда выводит ожидаемый список файлов без удаления.
  • Тест 2: мелкая выборка — поместите 3 файла с разными датами и убедитесь, что удаляются только нужные.
  • Тест 3: разрешения — скрипт выполняется от целевого пользователя и не затрагивает системные каталоги.

Критерии приёмки:

  • Скрипт удаляет только файлы старше указанного порога.
  • Нет удаления директорий или скрытых системных файлов.
  • Логи (cron или systemd) показывают успешные запуски и ошибки.

Риски и способы их снижения

  • Риск: непреднамеренное удаление важных данных. Митигатор: dry-run и резервные копии.
  • Риск: запуск от root удалит всё. Митигатор: запускать от обычного пользователя и проверять путь.
  • Риск: несовместимость опций find. Митигатор: проверить man find на целевой системе.

Быстрая шпаргалка (cheat sheet)

  • Найти файлы старше 7 дней: find /path -type f -mtime +7 -print
  • Удалить файлы старше 30 минут: find /path -type f -mmin +30 -exec rm -f {} \;
  • Перенести файлы старше 14 дней: find /path -type f -mtime +14 -exec mv {} /archive/location/ \;

Роль‑ориентированные чек‑листы

Для рядового пользователя:

  • Подготовить папку для тестирования.
  • Запустить dry-run.
  • Применить cron или GUI.

Для администратора:

  • Проверить права доступа и owner каталога.
  • Настроить systemd таймеры с логированием.
  • Обеспечить резервное копирование критичных данных.

Короткое резюме

  • find — надёжный инструмент для удаления старых файлов.
  • Обязательно тестируйте перед удалением и используйте абсолютные пути.
  • Для регулярных запусков используйте cron или systemd‑таймеры.

FAQ

Q: Чем -mmin отличается от -mtime? A: -mmin считает минуты, -mtime — дни. -mmin полезен для частых проверок.

Q: Можно ли использовать -delete вместо -exec rm? A: Да, но -delete не поддерживается во всех сборках find; проверьте man find.

Q: Как избежать удаления директорий? A: Указывайте -type f чтобы искать только файлы.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро