我有很多zip文件需要重新打包/重新压缩才能解决MediaWiki 0.1.18中的错误。
我可以用
做到#!/bin/bash
for f in *zip; do
cd tmp
rm -rf *
unzip ../"$f"
zip -r ../"$f" *
cd ..
done
但有没有办法做到这一点,例如有管道还是拉链选项?
答案 0 :(得分:6)
gzip -d -c old.gz | gzip >new.gz
答案 1 :(得分:2)
你做不到。如果您将一些位发送到zip,则无法知道一个文件何时结束并且新文件何时开始。
实际上你可以编写自己的程序来完成这项工作但是根据你的描述,它似乎有点矫枉过正。此外,您不知道您正在修复哪些错误,因此无法建议其他解决方法。
答案 2 :(得分:2)
有一个名为AdvanceCOMP的实用程序可以完全满足您的需求。它会重新压缩ZIP和GZ文件(以及其他一些文件)而无需中间提取到磁盘。 (我确实认为使用的机制是解压缩数据并重新压缩它,但这不需要将文件写入磁盘或重新生成元数据。)
答案 3 :(得分:1)
有点晚了,但对于后来的人来说可能会有所帮助:
zipsplit -n 2147483648
将重新打包至2GiB,无需提取。但由于此命令用于拆分zip文件,因此没有选项可以覆盖原始文件或指定输出文件,只能输出目录。