Сценарий оболочки не должен удалять файлы в * корневом каталоге *. Мой * путь будет таким: / export / home / ftp / ...
Я провел небольшое исследование и выяснил, как найти и удалить файлы старше 30 дней по определенному пути с помощью команд find и exec.
* найти / экспорт / home / ftp / -type f -mtime +30 -exec rm -f {} \;
Но согласно требованию я хочу удалить console.log и server.log только из этого каталога и исключить остальные файлы.
Пожалуйста, помогите мне в этом вопросе.
Если вам просто нужно каждый месяц удалять старые server.log и console.log, вы также можете использовать logrotate
который, скорее всего, уже работает под RHEL. Такой фрагмент конфигурации будет работать в /etc/logrotate.d/*.conf
или где бы в вашей системе ни находились файлы конфигурации.
# rotate server.log and console.log every month
# delete, not compress, old file
/export/home/ftp/server.log /export/home/ftp/console.log {
monthly
rotate 0
}
Пользовательский ежемесячный cron, как предлагалось выше, также подойдет. Фактически, поскольку logrotate запускается из cron, вы можете считать это своего рода расширением cron. HTH.
Предполагая, что вам действительно нужно использовать find
для рекурсии через подкаталоги:
find /export/home/ftp \( -name console.log -or -name server.log \) -mtime +30 -exec rm -f {} +
Почему бы просто не использовать ежемесячный cron?
@monthly / usr / bin / rm -f console.log @monthly / usr / bin / rm -f server.log
Это определенно будет безопаснее, чем работать с find.
Проверьте этот удобный инструмент от debian жнец
Альтернативой было бы использование xargs, что, по-видимому, более эффективно - http://www.sunmanagers.org/pipermail/summaries/2005-March/006255.html
Итак, вы можете сделать что-то вроде этого:
find /export/home/ftp -maxdepth 1 \( -name console.log -or -name server.log \) -mtime +30 | xargs -O -r rm