gpt4 book ai didi

linux - 在 Linux 中,如何将输入流压缩为多个输出文件?

转载 作者:可可西里 更新时间:2023-11-01 11:49:12 25 4
gpt4 key购买 nike

我知道怎么做:

commandGeneratingLotsOfSTDOUT | bzip2 -z -c > compressed.bz2

我也知道怎么做:

commandGeneratingLotsOfSTDOUT | split -l 1000000

但我不知道该怎么做:

commandGeneratingLotsOfSTDOUT | split -l 1000000 -compressCommand "bzip2 -z -c"

如果上面的内容还不是 100% 清楚,我正在运行一个生成 1TB 或 2TB 输出的命令。我希望将输出分成 N 行的 block (在本例中为 100 万行),并将每个 block 进行 bzip2 压缩并存储在一个文件中。

现在我做的是:

commandGeneratingLotsOfSTDOUT | split -l 1000000
foreach fileGenerated { bzip2 -z thatFile }

这为每个文件增加了额外的磁盘写入和磁盘读取(并再次写入磁盘,尽管是压缩的)!由于文件都大于 RAM,因此这转化为实际磁盘使用量。

最佳答案

怎么样:

cmdWithLotsOfSTDOUT | split -l 1000000 --filter 'bzip2 > "$FILE.bz2"'

一个例子:

$ ls
afile

$ cat afile
one
two
three
four
five
six
seven
eight
nine
ten

$ cat afile | split -l 2 --filter='bzip2 > "$FILE.bz2"'

$ ls
afile xaa.bz2 xab.bz2 xac.bz2 xad.bz2 xae.bz2

$ bzip2 -dc xac.bz2
five
six

$

关于linux - 在 Linux 中,如何将输入流压缩为多个输出文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23700718/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com