Как слить несколько .gz архивов (gzip) в один не распаковывая их в bash?

Как слить несколько .gz архивов (gzip) в один не распаковывая их? Есть множество таких архивов, весят очень много, распаковывать крайне не желательно, при этом нужно объединить в один файл. При этом в каждом из архивов хранится таблица у которой есть header, хотелось бы сделать так чтобы в общем файле оказался header только первого файла чтобы такие header'ы доставшихся файлов не втречались где то в средине общего файла. Как написать пайплайн в bash? Я в нем не силен.


Ответы (2 шт):

Автор решения: Lexx
cat *$(ls -v  *tar.gz*) > backup.tar.gz
→ Ссылка
Автор решения: eri

Читаю голову у первого файла, читаю со второй строчки все файлы. Всё в пайп, пайп в гзип, гзип в файл. Убедитесь что генератор изначальных файлов добавляет пустую строку в конце. если нет, то добавьте echo \n в цикле.

(
zcat file1.gz | head -n1 ;

for f in *.gz; do
  zcat ${f} | tail -n+2 
done
) | gzip > bigfile.tmp
mv bigfile.tmp bigfile.gz
→ Ссылка