【问题标题】:How can I specify the version of zip to use in bash?如何指定要在 bash 中使用的 zip 版本?
【发布时间】:2012-06-21 16:25:49
【问题描述】:

背景(无需阅读)

我正在修改 MS office 文件以供工作(试图找出最快、最简单的方法来自动生成任意长度的 excel 和 powerpoint 文件)。由于实际的 excel 文件只是在文件名后附加了 .xlsx 的压缩档案,因此我一直在解压缩它们,编辑 xml,重新压缩它们,并查看 OpenOffice 是否仍然可以加载它们。

但是,我已经意识到(谢天谢地,在没有进行太多这样的测试之后)默认情况下,bash 中的“zip”命令(或者至少在我的 mac 上)正在以仅需要解压 v1.0 才能解压,但普通的 excel 文件会以需要 v2.0 解压的方式进行压缩。我通过压缩和解压缩我知道正常加载的 excel 文件,然后尝试加载它来检查这是一个问题。 OpenOffice 很不高兴。

所以,我知道我需要完全按照 excel 的方式压缩文件,但我不确定如何做到这一点。我的电脑上有 zip 版本 3,所以希望如果 zip/unzip 发布周期是同步的,它应该是可能的,但我没有在手册页上看到任何立即似乎是解决方案的内容。

编辑: 并且 zip -9(其中 zip -h 有用地表示指示 zip 更好地压缩)仍然只需要 v1.0 即可提取。


问题:

如何在 bash 中指定我希望 zip 以需要 unzip v2.0 才能解压缩的方式压缩文件?

【问题讨论】:

  • 有趣:zip --helpzip -h2zip -so 没有透露任何有关 Unzip v2.0 的信息。
  • 恰如其分地注意到讽刺。不能假装我不配……所以我想现在,多亏了我,它已经发生了。好久好久终于有人不小心在网上问了一个愚蠢的问题。
  • 完全没有讽刺意味。这是一个完全直接的观察,当我使用显示的选项运行 zip 时,-h2-so 不明显,仍然没有任何信息。我没有时间做进一步的研究。
  • 啊。我以为您是在指出我应该对“解压缩”进行更多研究,这将是完全正确的观点。无论如何,感谢您的同情,以及您让我意识到我犯下的逻辑错误,无论多么无意。

标签: excel zip powerpoint unzip


【解决方案1】:

通常,不同版本生成的压缩文件之间不兼容的原因是使用的压缩算法。如果使用 zip 1.0 中不存在的算法压缩文件,则会导致您看到的不兼容。

查看 zip 实用程序的手册页,看看是否有指定要使用的压缩类型的选项。如果有,请查看从 Excel 创建的现有文件,找出压缩它们的压缩算法类型,然后使用它。

在我的 Linux 系统上,zip 报告“这是 Zip 2.31(2005 年 3 月 8 日),由 Info-ZIP 提供。”,并且它没有指定压缩算法的选项。在我的 Windows 系统上,7-zip 确实有该选项,而且看起来他们确实有可用的 Mac 版本,所以如果您的 zip 实用程序不支持该选项,您可以尝试一下。

【讨论】:

  • 谢谢!实际上,我最终决定使用 Apache POI API 并放弃尝试重新创建完全 Microsoft 文档标准(因为不出所料,它们被证明是非常令人沮丧的不透明),但我确信我必须处理这个/一个非常像这样的问题很快,所以任何帮助都会有帮助。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-26
  • 2011-07-11
相关资源
最近更新 更多