Localiza arquivos, em seguida, tar com curinga

0

Eu tenho uma série de arquivos chamados:

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

Eu quero encontrar todos os arquivos de log com uma certa idade, depois tar.gz junto com qualquer outro arquivo com a mesma parte inicial do nome em um arquivo.

$ 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
...

No entanto, se eu digitar

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

por si só, funciona bem. Então parece que algo está errado com o globbing quando o find passa o comando para o shell.

O que estou perdendo?

    
por Paul 19.12.2014 / 05:13

2 respostas

0

Por que você tem citações em torno do seu comando tar? Mate as citações. Você está tentando executar o comando:

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

sem argumentos

Lembre-se de que os comandos do UNIX podem ter espaços incorporados nele.

Eu não posso testar isso, mas:

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

deve funcionar.

    
por 19.12.2014 / 05:48
0

Tente remover as aspas ao redor do comando tar e também remova * após {}, por que você está usando * após {}. Eu verifiquei se está funcionando bem.

    
por 19.12.2014 / 06:55

Tags