如何分割文件并直接压缩?

我有一个100GB的文件,我想分割成100个1GB的文件(通过换行符)

例如

split --bytes=1024M /path/to/input /path/to/output 

对于生成的100个文件,我想将gzip / zip应用到这些文件中的每一个。

是否可以使用单个命令?

使用“ – filter”:

split --bytes=1024M --filter='gzip > $FILE.gz' /path/to/input /path/to/output

使用有条件的单行程尽可能接近你。

 cd /path/to/output && split --bytes=1024M /path/to/input/filename && gzip x* 

gzip将只在split成功的情况下运行,因为条件&&也是在cdsplit之间,确保cd是成功的。请注意, splitgzip输出到当前目录,而不是有能力指定输出目录。 如果需要,您可以制作目录:

 mkdir -p /path/to/output && cd /path/to/output && split --bytes=1024M /path/to/input/filename && gzip x* 

把所有的东西放在一起:

 gunzip /path/to/files/x* && cat /path/to/files/x* > /path/to/dest/filename