Linux查找和Zip文件

使用我的日志和find命令时遇到了两个问题。

  1. 我遇到了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. 我遇到的第二个问题是我想查找所有date超过1天的日志,并单独压缩它们。 所以如果我的find命令find1-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个压缩文件,但是我希望每个文件都是独立的,我希望它们保持在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 {} \;