É um pouco mais curto fazer isso usando o GNU Parallel:
parallel gunzip -c ::: file*.gz > final
mas essencialmente também grava em arquivos temporários.
Assista aos introvideos para saber mais: link
É possível gunzipar vários arquivos e concatená-los em um arquivo grande, mas fazê-lo em paralelo, dada uma máquina multicore? Por exemplo, agora eu faço:
gunzip -c file1.gz > final
gunzip -c file2.gz >> final
gunzip -c file3.gz >> final
gunzip -c file4.gz >> final
Posso fazer o mesmo para que o processamento gunzip dos diferentes arquivos seja feito em diferentes CPUs na máquina multicore e eles sejam concatenados no mesmo arquivo final?
É um pouco mais curto fazer isso usando o GNU Parallel:
parallel gunzip -c ::: file*.gz > final
mas essencialmente também grava em arquivos temporários.
Assista aos introvideos para saber mais: link
você tem que usar arquivos temporários para isso:
gunzip -c file1.gz > final &
one=$!
gunzip -c file2.gz > final2 &
two=$!
gunzip -c file3.gz > final3 &
three=$!
gunzip -c file4.gz > final4 &
four=$!
wait $one && wait $two && wait $three && wait $four
cat final2 >> final
cat final3 >> final
cat final4 >> final
para descomprimir as partes de um arquivo maior no arquivo final, você deve saber o tamanho descompactado das partes. só então você poderia criar um arquivo vazio biiiig e escrever a saída da descompressão para a posição correta no arquivo grande (com dd
por exemplo). já que você não conhece o tamanho descomprimido (sem descompactar as partes primeiro) isso não funcionará.