A documentação de xz
diz
It is possible to concatenate
.xz
files as is.xz
will decompress such files as if they were a single.xz
file.
Nos meus testes, isso funciona mesmo se os arquivos diferentes forem compactados com opções diferentes; então no seu caso
cat -- *.log.xz > newfile.log.xz
funcionará bem.
Para responder à sua pergunta mais geral, você pode canalizar a saída de um comando composto, por exemplo,
for file in -- *.log.xz; do xzcat -- "$file"; done | xz -ve9 > newfile.log.xz
ou qualquer subshell. Isso permitiria que você executasse qualquer processamento que desejasse em seus arquivos de log antes de recomprimi-los. No entanto, no caso básico, isso também não é necessário; você pode descompactar e recompactar todos os seus arquivos executando
xzcat -- *.log.xz | xz -ve9 > newfile.log.xz
Se você adicionar -f
, isso funciona com arquivos descompactados, então
xzcat -f -- uncompressed.log *.log.xz | xz -ve9 > newfile.log.xz
permitiria combinar registros descompactados e compactados.