Можно ли комбинировать несколько файлов .gz, чтобы они извлекались в один файл?
Давайте скажем, что у меня есть 3 файла: 1.txt
, 2.txt
и 3.txt
, которые все могут быть gzipped. Я знаю, что gzip позволяет объединять несколько файлов с помощью cat:
cat 1.gz 2.gz 3.gz > 123.gz
Однако при извлечении 123.gz он будет создавать исходные 3 файла.
Можно ли объединить три архива так, чтобы отдельные файлы в архиве были объединены в один файл?
Ответы
Ответ 1
Удивительно, но это действительно возможно.
GNU zip man page: несколько сжатых файлов могут быть объединены. В этом случае gunzip выведет всех участников сразу.
Пример:
Вы можете создать zip следующим образом:
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
Затем извлеките его:
gunzip -c all.gz > all.txt
Теперь содержимое all.txt
должно быть:
1
2
3
Это то же самое, что:
cat 1.txt 2.txt 3.txt
И - как вы просили - "gunzip выберет всех участников сразу".
Ответ 2
Чтобы объединить несколько файлов, попробуйте:
gzip -c 1.txt > 123.gz
gzip -c 2.txt >> 123.gz
gzip -c 3.txt >> 123.gz
Впоследствии gzip -dc 123.gz
будет эквивалентен cat 1.txt 2.txt 3.txt
.