linux 压缩为多个文件,在Linux中,如何将输入流压缩为多个输出文件?
我知道怎么做:
commandGeneratingLotsOfSTDOUT | bzip2 -z -c > compressed.bz2
我也知道怎么做:
commandGeneratingLotsOfSTDOUT | split -l 1000000
但我不知道該怎么做:
commandGeneratingLotsOfSTDOUT | split -l 1000000 -compressCommand "bzip2 -z -c"
如果上面的內容尚未100%清除,我正在運行一個生成TB或兩個輸出的命令.我希望將輸出分成N行的塊(在這種情況下為100萬),并將每個塊壓縮為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,bigdata,split,compression
來源: https://codeday.me/bug/20190830/1770759.html
總結
以上是生活随笔為你收集整理的linux 压缩为多个文件,在Linux中,如何将输入流压缩为多个输出文件?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vscode如何查看修改过的部分_编辑器
- 下一篇: batchplot插件用法_Batchp