Автоматическое удаление старых файлов в папке
Как это работает (коротко)
Команда find просматривает дерево каталогов и выбирает файлы по критериям (возраст, тип, права и т. п.). Параметр -mtime ищет файлы по возрасту в днях, а -mmin — в минутах. После выбора можно выполнить команду на каждом найденном файле через -exec или воспользоваться опцией -delete.
Определения:
- mtime: возраст файла по модификации в днях.
- mmin: возраст файла по модификации в минутах.
Пример правильной команды
Ниже — рабочий и безопасный базовый пример, который находит обычные файлы (не каталоги) и удаляет их, если им более 1 дня:
find /home/damien/Pictures -type f -mtime +1 -exec rm -f {} \;Пояснения:
- /home/damien/Pictures — абсолютный путь к папке. Всегда используйте полный путь.
- -type f — ограничивает результат только обычными файлами.
- -mtime +1 — файлы старше 1 дня. Знак + означает «более чем». Знак - означает «менее или равно».
- -exec rm -f {} \; — выполняет rm -f для каждого найденного файла.
Альтернативы:
- Быстрый и безопасный просмотр (без удаления):
find /home/damien/Pictures -type f -mtime +1 -print- Использование встроенного удаления (короче):
find /home/damien/Pictures -type f -mtime +1 -deleteЗамечание: -delete выполняет удаление на месте, поэтому сначала протестируйте через -print.
Более безопасные варианты и тестирование
Important: Никогда не выполняйте удаление без предварительной проверки. Рекомендуемые шаги:
- Запустите команду с -print или -ls, чтобы увидеть список файлов.
- Протестируйте фильтры по маске, типу и глубине (см. -maxdepth).
- При необходимости используйте интерактивное удаление: -exec rm -i {} \; — потребует подтверждение для каждого файла.
- Рассмотрите перенос в корзину вместо мгновенного удаления (см. раздел «Перемещение в корзину»).
Пример «сухого прогона» с подробностями и ограничением глубины:
find /home/damien/Pictures -maxdepth 1 -type f -mtime +1 -lsПараметры времени и синтаксис
- mtime: целые дни. +5 = больше 5 дней, -5 = 5 дней или меньше.
- mmin: минуты. +60 = больше 60 минут.
- Комбинации интервалов: для файлов старше 5 и младше 10 дней используйте логическое сочетание через два вызова find или проверяйте через -newermt/! -newermt. Пример с touch для интервала:
# Создаём временные метки
touch -d "10 days ago" /tmp/older
touch -d "5 days ago" /tmp/newer
# Находим файлы между 5 и 10 днями
find /path/to/dir -type f ! -newer /tmp/newer -newer /tmp/older -printПеремещение в корзину вместо удаления
Для дополнительной безопасности можно не удалять, а перемещать файлы в корзину (Trash). На десктопных системах это можно делать через утилиты, например gio или gvfs-trash:
# Переместить найденные файлы в корзину (если доступна команда gio)
find /home/damien/Pictures -type f -mtime +30 -exec gio trash {} \;Если gio отсутствует, можно создать простой скрипт, который перемещает файлы в ~/Trash или ~/.local/share/Trash/files.
Дополнительные опции find (полезные фильтры)
- -name “*.png” — по маске имени файла.
- -maxdepth N — ограничить глубину поиска.
- -mtime и -mmin — время в днях и минутах.
- -user NAME — файлы, принадлежащие пользователю.
- -size +10M — файлы больше 10 мегабайт.
Пример: удалить старые PNG только в корне каталога:
find /home/damien/Pictures -maxdepth 1 -type f -name "*.png" -mtime +7 -deleteАвтоматизация
Есть несколько подходов для автоматического запуска: запуск при старте системы, cron, systemd timer или графические планировщики (Gnome Schedule). Ниже — инструкции для трёх распространённых способов.
1. Запуск при старте
- Создайте исполняемый скрипт в домашней папке, например ~/find-and-delete, с содержимым:
#!/bin/bash
# Пример: удалить файлы старше 7 дней
find /path/to/directory -type f -mtime +7 -delete- Сделайте файл исполняемым:
chmod +x ~/find-and-delete- Откройте файловый менеджер, перейдите в домашнюю папку, щёлкните правой кнопкой по файлу find-and-delete, выберите Свойства → Права доступа и отметьте «Разрешить выполнение файла как программы».

- Откройте «Приложения при запуске» (Startup Applications) и добавьте новый элемент, указывая полный путь к ~/find-and-delete.
Note: На многих дистрибутивах предпочтительнее создать .desktop файл в ~/.config/autostart.
2. Cron
Для регулярного запуска используйте crontab. Откройте crontab для текущего пользователя:
crontab -eЕсли система предложит выбрать редактор, для nano обычно вводят 2.
Структура записи в crontab:
минуты часы день-месяца месяц день-недели командаЗапуск скрипта каждый час (в начале часа):
0 * * * * /home/username/find-and-deleteПример для запуска раз в день в 3:30 утра:
30 3 * * * /home/username/find-and-delete
Сохраните (Ctrl+O) и выйдите (Ctrl+X) в nano.
3. Gnome Schedule
Если использование терминального crontab пугает, установите Gnome Schedule и создайте задачу через графический интерфейс. Это удобно для пользователей рабочего стола.

Альтернативы: systemd timer
Для современных систем рекомендуется использовать systemd timer: он надёжен, даёт логи и лучше управляется.
Минимальный пример:
- Создать файл юнита службы: ~/.config/systemd/user/find-and-delete.service
[Unit]
Description=Delete old files in Pictures
[Service]
Type=oneshot
ExecStart=/home/username/find-and-delete- Создать таймер: ~/.config/systemd/user/find-and-delete.timer
[Unit]
Description=Run find-and-delete every day
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.targetЗатем запустить и включить таймер:
systemctl --user daemon-reload
systemctl --user enable --now find-and-delete.timersystemd даёт журналы через journalctl –user -u find-and-delete.service.
Контрольный список перед включением автоматизации
- Протестировать команду с -print или -ls.
- Убедиться в правильности абсолютного пути.
- Ограничить -maxdepth, если нужно.
- Подумать о переносе в корзину вместо удаления.
- Настроить уведомления или логи (stdout → файл).
Критерии приёмки
- Скрипт выполняется вручную и выводит ожидаемый список файлов при dry-run.
- После включения в cron/systemd задача выполняется по расписанию и не удаляет лишних файлов.
- Логи доступны и содержат информацию о запусках и ошибках.
Частые ошибки и как их избежать
- Ошибка: запуск find без -type f приведёт к попытке удалить каталоги. Решение: добавьте -type f.
- Ошибка: использование относительных путей. Решение: используйте абсолютные пути.
- Ошибка: отсутствие экранирования символов в -exec. Помните про последовательность \;.
- Ошибка: отсутствие тестового прогона. Всегда сначала -print.
Краткая сводка
Используйте find с -type f и -mtime/-mmin для выборки старых файлов. Сначала выполните dry-run с -print или -ls. Для автоматизации используйте cron, systemd timer или автозапуск. При желании перемещайте файлы в корзину вместо немедленного удаления.
1‑строчный глоссарий
- find: утилита для поиска файлов в дереве каталогов.
- -mtime/-mmin: возраст файла в днях/минутах.
- -exec: выполнить команду для каждого найденного файла.
- cron/systemd: планировщики задач.
Соблюдайте осторожность и всегда проверяйте список файлов перед удалением.
Похожие материалы
Троян Herodotus: как он работает и как защититься
Включить новое меню «Пуск» в Windows 11
Панель полей сводной таблицы в Excel — руководство
Включить новое меню «Пуск» в Windows 11
Дубликаты Диспетчера задач в Windows 11 — как исправить