使用我的日志和 find 命令时,我遇到了 2 个问题。
- 我在使用 mtime 选项时遇到问题。下面的第一个命令向我显示了从 3 月 5 日到 3 月 7 日的一些文件,就像我相信的那样。但是,当我将 +1 添加到 mtime 而不是 +0 时,它只会执行运行命令时我所在的当前目录的 ls。它只是在 /home/user/ 下监听我的目录。不确定为什么 +1 会破坏它。
sudo find /logs/ -type f -name '*.log' -mtime +0 | xargs ls -l
- 我遇到的第二个问题是我想找到所有早于 1 天的日志并将它们单独压缩。因此,如果我的查找命令找到 1-1-13.log、1-2-13.log 和 1-3-13.log,我希望每一个都变成 log.gz。我通过执行以下命令尝试了此操作,但它不起作用。我想我可能必须为此做一个小的 bash 脚本,但我希望通过一个快速命令来完成。
sudo find /logs/ -type f -name '*.log' -mtime +0 | xargs gzip -9 *
我见过的大多数示例都涉及将所有文件压缩到 1 个存档中,但我希望每个文件都单独存在,并且我希望它们保留在找到它们的同一位置。
提前致谢。
2.
您
xargs
在此示例中的命令很奇怪:如果要列出文件,只需单独使用
find
,例如:或者:
如果该命令生成了您期望的文件列表,那么下一步应该很容易(如下)。如果该
find
命令没有生成您期望的文件列表,则表明这些文件实际上比您想象的更晚被修改。您的 xargs 命令有问题:
您需要
*
在 xargs 命令中删除它;您希望传递给 gzip 的文件列表来自find
命令,而不是通过 shell globbing。所以这应该可以正常工作:您也可以使用 执行此操作
find ... -exec ...
,但这通常是一种性能较低的解决方案。