查找文件然后使用通配符进行 tar

查找文件然后使用通配符进行 tar

我有一系列文件,名为:

2014111test.log
2014111test.log.stuff
2014111test.log.flibble
2014115test.log
2014115test.log.stuff
2014115test.log.flibble

我想找到所有超过一定年限的日志文件,然后将它们与名称开头相同的任何其他文件一起 tar.gz 到存档中。

$ find . -name '20*.log' -ctime +90 -exec 'tar zvcf /var/log/logzip/{}.tgz {}*' \;
find: tar zvcf /var/log/fwlogzip/./2014111test.log.tgz ./2014111test.log*: No such file or directory
...

但是,如果我输入

tar zvcf /var/log/fwlogzip/./2014111test.log.tgz ./2014111test.log*

就其本身而言,它工作正常。因此,看起来当 find 将命令传递给 shell 时,通配符出现了问题。

我错过了什么?

答案1

尝试删除 tar 命令周围的引号,并删除 { } 后的 *,为什么在 { } 后使用 *。我已检查过,它工作正常。

答案2

为什么你的 tar 命令周围有引号?删除引号。你正在尝试运行以下命令:

tar zvcf /var/log/fwlogzip/./2014111test.log.tgz ./2014111test.log*

无参数

请记住,UNIX 命令中可以嵌入空格。

我无法测试这个但是:

find . -name '20*.log' -ctime +90 -exec tar zvcf /var/log/logzip/{}.tgz {}* \;

应该管用。

相关内容