2015-04-28 72 views
-3

我有一个服务器,它在日志目录中创建了几个日志文件。由于这种日志记录机制,它在我的服务器上占用了很多磁盘空间。我想编写一个脚本,删除所有超过一天的文件并保留最新的文件。删除超过一天的文件

我可以使用ls -trl命令以排序的形式列出目录。但我无法理解如何删除这些文件。请帮忙。

+3

使用['find(1)'](http://linux.die.net/man/1/find),注意不要在脚下自己拍摄。 – unwind

回答

3

您可以使用下面的命令:

/usr/bin/find <Your Log Directory> -mtime +1 | xargs rm -f 

mtime - 提供文件的修改时间。

+1 - 表示超过一天。

+0

如果您打算使用管道,请确保您使用-print0和xargs -0,否则您的名称中将会出现空白文件的问题 – cbz

+0

我会劝阻使用'find | xargs rm -f'。 'find'有一个'-delete'选项。 – anishsane

1

尝试使用RM和find命令,如:

find . -mmin +$((60*24)) -exec rm {} \; 
0

find . -mtime +1 -exec rm {} \;

+0

虽然代码是赞赏,它应该总是有一个附带的解释。这不需要很长时间,但它是预期的。 – peterh

+0

我同意这一点。我只是留下了我的答案,因为与我同时发布的其他答案实际上是相同的,并进行了解释。没有看到编辑我的观点。 –

1

你不想ls,你想find

它有一个整洁的参数-mtime,它将结果限制为特定的时间增量,而-exec允许您提供命令来运行结果。

因此,例如,

find -mtime +10 -name "*tmp*" -exec rm {} \; 

是否上的所有文件rm年龄超过10天,在名称中tmp

噢,小心点。

非常小心。

相关问题