我在Linux上有一个250GB的gzipped文件,想把它分成250个1GB的文件,并即时压缩生成的部分文件(一旦生成一个文件,就应该立即压缩)。
我尝试使用以下命令 -
zcat file.gz | split -b 1G – file.gz.part
但是这样生成的文件是未压缩的,这是正确的。我将其修改为以下形式,但是出现了错误:
zcat file.gz | split -b 1G - file.gz.part | gzip
gzip: compressed data not written to a terminal. Use -f to force compression.
For help, type: gzip -h
我也尝试过这个方法,没有报错,但是并没有在生成分割文件时立即压缩它们。我猜测这会在整个分割完成后压缩每个文件(或者在分割完成后将所有分割文件打包成单个gz文件),但我不确定。
zcat file.gz | split -b 1G - file.gz.part && gzip
我在这里读到,有一个筛选器选项,但我的split版本是(GNU coreutils)8.4,因此不支持该筛选器。
$ split --version
split (GNU coreutils) 8.4
请建议一个适合的方式来实现这个目标,最好使用一行代码(如果可能)或者使用shell(bash/ksh)脚本也可以。
split -b 1G file.gz
,您最终将得到 250 个文件部分,您可以将它们连接在一起然后进行解压缩。 - Barton Chittenden