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

Rya*_*yan 14 linux bash command-line-interface gzip

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

例如

split --bytes=1024M /path/to/input /path/to/output
Run Code Online (Sandbox Code Playgroud)

对于生成的 100 个文件,我想对每个文件应用 gzip/zip。

是否可以使用单个命令?

小智 37

使用“--过滤器”:

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


Den*_*son 0

使用条件句的单行语句是最接近的。

cd /path/to/output && split --bytes=1024M /path/to/input/filename && gzip x*
Run Code Online (Sandbox Code Playgroud)

gzip仅当split成功时才运行,因为条件&&也位于cdsplit确保cd成功之间。请注意,splitgzip输出到当前目录,而不是能够指定输出目录。如果需要,您可以创建目录:

mkdir -p /path/to/output && cd /path/to/output && split --bytes=1024M /path/to/input/filename && gzip x*
Run Code Online (Sandbox Code Playgroud)

将其全部重新组合在一起:

gunzip /path/to/files/x* && cat /path/to/files/x* > /path/to/dest/filename
Run Code Online (Sandbox Code Playgroud)