我有一个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成功的情况下运行,因为条件&&也是在cd和split之间,确保cd是成功的。请注意, split和gzip输出到当前目录,而不是有能力指定输出目录。 如果需要,您可以制作目录:
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