我有很多 zip 文件需要重新打包/重新压缩才能解决 MediaWiki 0.1.18 中的错误。
我可以做到
#!/bin/bash
for f in *zip; do
cd tmp
rm -rf *
unzip ../"$f"
zip -r ../"$f" *
cd ..
done
但是有没有办法做到这一点,例如使用管道或 zip 选项?
gzip -d -c old.gz | gzip >new.gz
你不能。如果您将一些位发送到 zip,则无法知道一个文件何时结束以及新文件何时开始。
实际上,您可以编写自己的程序来完成这项工作,但从您的描述来看,这似乎有点矫枉过正。此外,您并没有告诉您到底要修复什么错误,因此无法建议其他解决方法。
There is a utility called AdvanceCOMP that does exactly what you're looking for. It recompresses ZIP and GZ files (and some others) without intermediary extraction to disk. (I do believe that the mechanism used is to decompress the data and recompress it, but that does not require writing files to disk or regenerating metadata.)
有点晚了,但可能对后来的人有帮助:
zipsplit -n 2147483648
将重新打包 zip 高达 2GiB 而无需提取。但由于此命令用于拆分 zip 文件,因此没有覆盖原始文件或指定输出文件的选项,只有输出目录。