使用我的日志和find命令时遇到了两个问题。
sudo find /logs/ -type f -name '*.log' -mtime +0 | xargs ls -l
sudo find / logs / -type f -name'* .log'-mtime +0 | xargs gzip -9 *
我见过的大多数例子都涉及将所有文件压缩成1个压缩文件,但是我希望每个文件都是独立的,我希望它们保持在find它们的相同位置。
提前致谢。
但是,当我向mtime添加+ 1而不是+0时,它只运行当前目录中的ls,当运行该命令时。
你在这个例子中的xargs命令很奇怪:
sudo find /logs/ -type f -name '*.log' -mtime +0 | xargs ls -l
如果你想列出文件,只需使用find ,例如:
sudo find /logs/ -type f -name '*.log' -mtime +0
要么:
sudo find /logs/ -type f -name '*.log' -mtime +1
如果该命令产生你期望的文件列表,下一步应该很容易(见下文)。 如果该find命令不会生成您期望的文件列表,则表明这些文件实际上比您想象的更新。
我遇到的第二个问题是我想查找所有date超过1天的日志,并单独压缩它们。 所以如果我的find命令find1-1-13.log,1-2-13.log和1-3-13.log,我希望每一个都变成log.gz.
你的xargs命令有问题:
sudo find /logs/ -type f -name '*.log' -mtime +0 | xargs gzip -9 *
你需要在你的xargs命令中去掉* 。 您希望传递给gzip的文件列表来自find命令,而不是通过shell通配符。 所以这应该工作得很好:
find /logs -type f -name '*.log' | xargs gzip -9
你也可以使用find ... -exec ...做到这一点,但这通常是一个性能较差的解决scheme。
2。
sudo find /logs/ -type f -name '*.log' -mtime +0 -exec gzip -9 {} \;