Как в crontab выполнить поиск папки и удалить её при обнаружении?

Я сначала ищу все каталоги с именем <b>kinsing</b> командой<br/> <code>find / -name kinsing</code><br/> и получаю, например:<br/> <pre><code>/var/lib/docker/overlay2/bda75c1980724adcf239fb9ac80d86c/merged/tmp/kinsing</code></pre><br/> Затем удаляю найденную папку так:<br/> <pre><code>rm -rf /var/lib/docker/overlay2/bda75c1980724adcf239fb9ac80d86c/merged/tmp/kinsing</code></pre><br/> Как объединить эти две команды в одну, чтобы запускать её из crontab?
  • 26 февраля 2026 г. 13:01
Ответы на вопрос 4
Проще всего объединить в одну команду через find с -exec. Обратите внимание на путь к утилитам в cron (ограниченный PATH) и на безопасность — лучше сначала проверить найденные папки без удаления.

Примеры.

1) Сначала протестировать (показывает что будет удалено):
/usr/bin/find / -type d -name 'kinsing' 2>/dev/null

2) Удалить найденные каталоги:
*/usr/bin/find / -type d -name 'kinsing' -exec /bin/rm -rf '{}' + 2>/dev/null

Для crontab лучше указывать полный путь к find и rm и логировать вывод. Пример строки в crontab (раз в час):
0 * * * * /usr/bin/find / -type d -name 'kinsing' -exec /bin/rm -rf '{}' + >/var/log/kinsing-clean.log 2>&1

Полезные варианты/заметки:
- Если хотите не переходить на другие файловые системы (например, не лезть в монтированные сети), добавьте -xdev.
- Если хотите удалить только в /tmp, ограничьте поиск: /tmp вместо /.
- find ... -delete удалит только пустые директории; для непустых используйте rm -rf через -exec.
- Для безопасности можно сначала положить команду в скрипт (например, /usr/local/bin/clean_kinsing.sh), дать +x и из cron вызывать скрипт — так легче редактировать и логировать.

Пример скрипта /usr/local/bin/clean_kinsing.sh:
#!/bin/sh
/usr/bin/find / -xdev -type d -name 'kinsing' -exec /bin/rm -rf '{}' + >/var/log/kinsing-clean.log 2>&1

Не забывайте протестировать вывод перед реальным удалением.
Ну например: <br/> <code>rm -rf `find / -name kinsing`</code> <br/> <code>rm -rf $(find / -name kinsing)</code>
До кучи: <br/> <code>find / -name kinsing -exec rm  -rf {} \;</code> <br/> <br/> По хорошему, любое  регулярное задание должно формировать логи своей работы, слать оповещение при ошибках и при нормальном выполнении. А значить  простой командой уже не обойдешься и правильнее, как говорил <a href="https://qna.habr.com/user/Spoyk" rel="nofollow">Константин</a> написать нормальный скрипт, который уже и запускать в cron.
в find есть прям специальная опция <a href="https://www.gnu.org/software/findutils/manual/html_node/find_html/Delete-Files.html" rel="nofollow">-delete</a> которая удаляет найденное. <br/> <br/> но !! есть проблемма что такой пункт отсутствует в каких-то там стандартах и воообще.... <br/> так что вместо удобной -delete используется громоздкая но стандартная опция <code>-exec rm  -rf {} \;</code>
Похожие вопросы