Encuentra archivos y luego alquitrán con comodín

0

Tengo una serie de archivos llamados:

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

Quiero encontrar todos los archivos de registro a partir de cierta edad, luego tar.gz junto con cualquier otro archivo con la misma parte inicial del nombre en un archivo.

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

Sin embargo, si escribo

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

Por sí mismo, funciona bien. Entonces parece que algo va mal con el globbing cuando find pasa el comando al shell.

¿Qué me estoy perdiendo?

Pablo
fuente

Respuestas:

0

¿Por qué tienes comillas alrededor de tu comando tar? Mata las citas. Estás intentando ejecutar el comando:

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

sin argumentos

Recuerde que los comandos UNIX pueden tener espacios incrustados en él.

No puedo probar esto pero:

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

Deberia trabajar.

Rich Homolka
fuente
No lo hace. ¿Lo probaste?
Paul
0

Intente una vez eliminar las comillas alrededor del comando tar y también elimine * después de {}, por qué está usando * después de {}. Lo he comprobado que funciona bien.

Ali786
fuente
Por favor, lea la pregunta nuevamente: estoy buscando varios archivos en base al nombre de archivo encontrado.
Paul