如何使用shell脚本删除旧的日志文件

时间:2011-08-03 04:15:52

标签: shell scripting

我的日志目录包含以下文件

access.log

defaultAuditrecorder20110901.log(这是第31个jun生成的日志文件)

defaultAuditrecorder20110901.log(这是第一个8月生成的日志文件)

defaultAuditrecorder20110902.log(这是第二次生成的第二个日志文件)

defaultAuditrecorder.log(这是currentdey正在运行的日志文件)

mng1.log001

mng1.log002

mng1.log003 ..............等......

我的要求是使用shell脚本我需要仅删除除当前和前一天之外的defaultauditrecord日志文件

2 个答案:

答案 0 :(得分:4)

考虑使用logrotate。它允许您删除(或压缩,旋转等)日志文件,并且可以进行配置。它可能比滚动您自己的脚本更强大。

编辑:这是tutorial

答案 1 :(得分:2)

最简单的机制是使用find命令。

find /var/log -mtime +2d -a -type f -print

这将找到2天前修改过的所有文件。要将其链接到删除命令,您可以使用:

find /var/log -mtime +2d -a -type f -print0 | xargs -0 rm

在本例中,我使用/ var / log,您将替换包含日志的目录。使用-print0和xargs -0的原因是,如果文件包含空格,则rm命令无法正确处理它。