This question already has an answer here:
-
Fast Concatenation of Multiple GZip Files
4 answers
Lets say that I have 3 file: 1.txt
, 2.txt
and 3.txt
which have all be gzipped. I'm aware that gzip allows multiple files to be combined using cat:
cat 1.gz 2.gz 3.gz > 123.gz
However when 123.gz is extracted it will produce the original 3 files.
Is it possible to combine the three archives in a way that the individual files within the archive will be combined into a single file as well?
Surprisingly, this is actually possible.
The GNU zip man page states: multiple compressed files can be concatenated. In this case, gunzip will extract all members at once.
Example:
You can build the zip like this:
echo 1 > 1.txt ; echo 2 > 2.txt; echo 3 > 3.txt;
gzip 1.txt; gzip 2.txt; gzip 3.txt;
cat 1.txt.gz 2.txt.gz 3.txt.gz > all.gz
Then extract it:
gunzip -c all.gz > all.txt
The contents of all.txt
should now be:
1
2
3
Which is the same as:
cat 1.txt 2.txt 3.txt
And - as you requested - "gunzip will extract all members at once".
In order to concatenate multiple files, try:
gzip -c 1.txt > 123.gz
gzip -c 2.txt >> 123.gz
gzip -c 3.txt >> 123.gz
Subsequently, gzip -dc 123.gz
would be equivalent to cat 1.txt 2.txt 3.txt
.