【发布时间】:2015-07-07 00:01:01
【问题描述】:
我有一个在日志目录中创建多个日志文件的服务器。由于这种日志记录机制,它占用了我服务器上的大量磁盘空间。我想编写一个脚本,删除所有超过一天的文件并保留最新的。
我可以使用ls -trl 命令以排序形式列出目录。但我无法理解如何删除这些文件。请帮忙。
【问题讨论】:
-
使用
find(1),注意不要射中自己的脚。
我有一个在日志目录中创建多个日志文件的服务器。由于这种日志记录机制,它占用了我服务器上的大量磁盘空间。我想编写一个脚本,删除所有超过一天的文件并保留最新的。
我可以使用ls -trl 命令以排序形式列出目录。但我无法理解如何删除这些文件。请帮忙。
【问题讨论】:
find(1),注意不要射中自己的脚。
你不想要ls,你想要find。
它有一个简洁的参数-mtime,将结果限制在特定的时间增量内,-exec 允许您提供一个命令来运行结果。
例如,
find -mtime +10 -name "*tmp*" -exec rm {} \;
对所有早于10 天的文件使用rm,名称中包含tmp。
哦,小心点。
非常小心。
【讨论】:
find . -mtime +1 -exec rm {} \;
【讨论】:
您可以使用以下命令:
/usr/bin/find <Your Log Directory> -mtime +1 | xargs rm -f
mtime - 提供文件修改时间。
+1 - 表示超过一天。
【讨论】:
find | xargs rm -f。 find 有一个 -delete 选项。
-mtime 很古怪。您可能希望+0 与+1 一样,它不会计算文件,直到它们至少 两天(一整天大于1)。或者您可以使用-mmin +$(( 1*24*60 )),几分钟内即可使用。
尝试使用 rm 并找到类似的命令:
find . -mmin +$((60*24)) -exec rm {} \;
【讨论】: