【发布时间】:2020-01-08 02:41:18
【问题描述】:
我正在尝试将多个 (29) 个压缩文件 (.gz) 一个接一个地合并到一个文件中。
压缩文件大小约为 500MB,未压缩格式约为 30GB。所有文件都以我不希望在最终文件中出现的标题开头。
我尝试过使用zcat和gzip,但是需要很多时间(超过3小时):
zcat file*.gz | tail -n +2 | gzip -c >> all_files.txt.gz
我也试过pigz:
unpigz -c file*.gz | tail -n +2 | pigz -c >> all_files_pigz.txt.gz
在这种情况下,我正在一个没有此命令且我无法安装任何东西的集群中工作。
我尝试的最后一件事是将所有内容与cat 合并:
cat file*.gz > all_files_cat.txt.gz
这并不需要很多时间,但是当我要阅读它时,在一些品脱出现以下消息:
gzip: unexpected end of file
我该如何处理?
【问题讨论】:
-
遗憾的是,除非文件使用 BGZF 或其他可索引 gzip 格式压缩,否则剥离该内容的唯一方法是解压缩并重新打包整个文件。正如你所说,pigz 或 libdeflate 会比 gzip 快。您还可以考虑并行进行拆包。最后,如果您经常这样做,可能值得研究 bgzf。
-
@GemTaylor 谢谢宝石!我去看看
标签: bash compression gzip large-files gunzip