我有很多需要重新打包/压缩的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
文件,但遗憾的是不是.gz
。 - Sandra Schlichtingzip
和unzip
安装了吗?还是7zip? - Konerakzip
还支持一个-c
参数,将输出重定向到STDOUT,然后将其管道传输到STDIN。将其放入您的bash脚本中并添加文件名。 - Konerak有一个叫做AdvanceCOMP的工具可以完全满足您的需求。它可以在不中间解压到磁盘的情况下重新压缩ZIP和GZ文件(以及一些其他文件)。我相信使用的机制是将数据解压缩并重新压缩,但这不需要将文件写入磁盘或重新生成元数据。
你无法这样做。如果您将一些位发送到zip,它就没有办法知道一个文件何时结束,另一个文件何时开始。
实际上,您可以编写自己的程序来完成此任务,但根据您的描述,似乎有些过度设计。此外,您没有说明要修复的错误具体是什么,因此无法建议其他解决方法。
有点晚了,但对于那些后来者可能会有帮助:
zipsplit -n 2147483648
可以在不解压缩的情况下重新打包zip文件,最多可以打包2GB。但由于此命令是用于拆分zip文件的,因此没有覆盖原始文件或指定输出文件的选项,只能指定输出目录。
man zip
没有提到这个问题,但我可以使用临时目录重新打包文件,但我真的想避免这种情况。 - Sandra Schlichting