我有很多的zip文件,我需要重新打包/重新压缩,以解决MediaWiki 0.1.18中的错误。
我可以做到
#!/bin/bash for f in *zip; do cd tmp rm -rf * unzip ../"$f" zip -r ../"$f" * cd .. done
但有没有办法做到这一点,例如用pipe道或可能是一个zip选项?
你不能。 如果你发送一些压缩文件,它就没有办法知道一个文件什么时候结束,一个新文件什么时候开始。
其实你可以编写自己的程序来完成这个工作,但从你的描述来看,这似乎是一个矫枉过正的问题。 你也不知道你修正了什么错误,所以不能建议其他解决方法。
gzip -d -c old.gz | gzip >new.gz
有一个名为AdvanceCOMP的实用程序,它完全符合您的要求。 它重新压缩的ZIP和GZ文件(和其他一些)没有中间提取到磁盘。 (我相信使用的机制是解压缩数据并重新压缩,但不需要将文件写入磁盘或重新生成元数据。)
有点晚了,但是对于那些迟来的人来说可能是有帮助的:
zipsplit -n 2147483648
将重新提取zip到2GiB而不提取。 但是由于这个命令是用来拆分zip文件的,所以没有选择覆盖原始文件或者指定输出文件,只能输出目录。