[英]How to repack zip files without using tmp dir?
我有很多zip文件需要重新打包/重新压缩才能解决MediaWiki 0.1.18中的错误。
我可以做到
#!/bin/bash
for f in *zip; do
cd tmp
rm -rf *
unzip ../"$f"
zip -r ../"$f" *
cd ..
done
但有没有办法做到这一点,例如管道或拉链选项?
gzip -d -c old.gz | gzip >new.gz
你不能。 如果您将一些位发送到zip,则无法知道一个文件何时结束并且新文件何时开始。
实际上你可以编写自己的程序来完成这项工作,但从你的描述来看,这似乎是一种过度杀伤力。 此外,您不知道您正在修复哪些错误,因此无法建议其他解决方法。
有一个名为AdvanceCOMP的实用程序可以完全满足您的需求。 它会重新压缩ZIP和GZ文件(以及其他一些文件)而无需中间提取到磁盘。 (我确实相信使用的机制是解压缩数据并重新压缩它,但这不需要将文件写入磁盘或重新生成元数据。)
有点晚了,但对于后来的人来说可能会有所帮助:
zipsplit -n 2147483648
将重新打包至2GiB,无需提取。 但是由于此命令用于拆分zip文件,因此没有选项可以覆盖原始文件或指定输出文件,只能输出目录。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.