如何将多个现有 zip 文件合并为一个文件?我这么问是因为我有很多 PDF 需要压缩,并且我想利用它parallel
来节省压缩它们的时间(如 中所示ls ./*.pdf | parallel "zip {}.zip {}"
)。这会创建许多 zip 文件,但我想将这些 zip 文件合并为一个文件。然后,我会将所有这些 PDF 作为一个 zip 文件(而不是多个文件)发送。
我听说两个串联的 zip 文件形成一个有效的 zip 文件,但在我的测试中,我实际上无法将一个大的串联 zip 文件解压缩回多个文件 - 大多数情况下,仅保留第一个文件就我所能做到的而言。
我考虑过将所有 zip 文件压缩到一个 bigfile.zip.tar 中,但如果可能的话,我也希望避免使用这种方法,因为我不认为收件人可以使用的标准解压缩工具可以轻松地将这样的文件恢复到许多单独的 PDF 中。
答案1
我认为您无法轻松连接 ZIP 文件。
gzip 文件怎么样?与 ZIP 文件不同,它们应该很容易连接,如下所示:https://stackoverflow.com/questions/8005114/fast-concatenation-of-multiple-gzip-files。您还可以使用名为 Pigz 的并行 gzip:https://zlib.net/pigz/。但是,如第一个链接的答案中所述,很难从此类串联的 gzip 文件中提取单个文件。
您确定您的收件人无法解压缩 tar 文件吗?大多数广泛使用的解/压缩程序现在都支持 tar 存档。还有一个有趣的选项结合 tar 和 pbzip2,它允许您使用 pbzip2 的并行处理:https://linuxconfig.org/how-to-perform-a-faster-data-compression-with-pbzip2。
答案2
您基本上想要连接 zip 文件。 zip 文件格式不支持,但支持不压缩。当使用通常已经压缩的 .pdf 文件时,这可能有意义。
所以使用-0
:
zip -0 my.zip *pdf