Как разделить большой gzip-файл на более мелкие gzip-файлы без предварительной распаковки?

Как разделить большой gzip-файл на более мелкие gzip-файлы без предварительной распаковки?

Есть ли способ разделить большой gzip-файл на более мелкие gzip-файлы без использования zcat?

zcat large.bed.gz| split --numeric-suffixes - -b 7M --filter='gzip > $FILE.gz' large.part.

решение1

Ответ на ваш вопрос (принимая во внимание цель экономии времени, а не замену zcat на что-то другое — что можно сделать) таков:это невозможно.

Проблема в том, что сжатый выходной файл gzip будет иметь различную длину в зависимости от входных данных, и это нелегко предсказать, поэтому нет очевидных границ, по которым можно разбить файл.

Также, является ли команда, которую вы посоветовали, фактической командой, которую вы используете? Если так, то она сломана, так как она разделит файл в произвольных позициях, а не по границам строк. Вам следует использовать что-то вроде "-l XXXXX" - где XXXXX - это количество строк, а не "-b 7M" - размер блока.

Вы не предоставили нам достаточно информации, чтобы мы могли порекомендовать дальнейшие обходные пути, но если вы контролируете, как создается файл .gz, вы можете разделить файл на части по мере его создания — это довольно распространенная практика, и существует множество стратегий, которые можно применить в зависимости от способа его создания.

Связанный контент