将数据写入zip文件

我有一个正在ubuntu终端(bash)中运行的脚本。目前,我正在使用以下命令将脚本的输出直接附加到文件中:

./ run.sh> a.txt

但是对于某些输入文件,run.sh可能会生成较大的输出,而无需压缩。是否可以将这些输出直接写到zip文件中,而无需通过转储文件中间文件? 我知道在Java和python中是可能的。但是我想要在bash中执行此操作的通用方法,这样即使正在运行的程序发生更改,我也可以保持run.sh不变。

我尝试过搜索网络,但是没有发现有用的信息。

gangnow 回答:将数据写入zip文件

在这种情况下,gzip文件会更合适。与zip是一种存档格式不同,gzip只是一种压缩数据格式,可以轻松地在管道中使用:

./run.sh | gzip > a.txt.gz

可以使用gunzip命令解压缩所生成的文件(产生文件a.txt),用zmore查看或用zcat列出,这使您可以使用过滤器处理输出,而无需将整个解压缩的文件写入任何地方。

,

“ zip”格式用于存档。 “ zip”程序可以获取现有文件,并将压缩后的版本放入存档中。例如:

./run.sh > a.txt
zip a.zip a.txt

但是,您要特别询问“流”解决方案(给定文件大小)。很少有实用程序使用“流媒体满意”的格式:gz,bz2和xz。每种类型都擅长使用不同类型的数据,但是在许多情况下,所有数据都可以使用。

./run.sh | gzip > a.txt.gz
./run.sh | bzip2 > a.txt.bz2
./run.sh | xz > a.txt.xz

如果您正在寻找最广泛的兼容性,那么gzip通常是您的朋友。

,

在bash中,您可以使用进程替换。

zip -FI -r file.zip <(./run.sh)
本文链接:https://www.f2er.com/3166831.html

大家都在问