Ejecutando find...exec tar czvf solo archiva un archivo...necesita todos los archivos

Ejecutando find...exec tar czvf solo archiva un archivo...necesita todos los archivos

Al intentar correr

find . -iname "*.gz" -mtime +7 -exec tar czvf all_gizip_$(date +%Y-%m-%d).tar.gz {} \;

me sale la lista de archivos

./corosync.log-20140620.gz
./corosync.log-20140618.gz
./rgmanager.log-20140620.gz
./fenced.log-20140620.gz
./rgmanager.log-20140618.gz
./qdiskd.log-20140618.gz

Pero el archivo sólo obtiene el último elemento.

 tar -tvf all_gizip_$(date +%Y-%m-%d).tar.gz
-rw-r--r-- root/root       506 2014-06-18 03:21 ./qdiskd.log-20140618.gz

¿Qué estoy haciendo mal?

Respuesta1

Su comando se ejecuta taruna vez para cada archivo y cada llamada tarcrea una salida con el mismo nombre, sobrescribiendo así la salida anterior. Entonces terminarás solo con el último archivo. Necesitas algo como

find . -iname "*.gz" -mtime +7 | xargs tar czvf all_gizip_$(date +%Y-%m-%d).tar.gz

Esto debería funcionar bien siempre que su lista de archivos no sea enorme. Si es así, entonces probablemente querrás pasar a usar tar rvfy realizar un paso separado gzipal final.

información relacionada