从zip文件中提取文件并在编辑后将其重新放入zip文件的最佳方法

时间:2011-04-07 22:30:57

标签: shell

我想知道是否有人可以帮助我使用SHELL脚本来完成以下工作:

从zip文件中提取文件,并在进行一些编辑后将其重新放入,例如使用sed进行替换。

我想避免将zip文件的所有内容解压缩到临时文件夹中。 zip文件可能包含与我想用编辑替换的文件同名的文件。在这种情况下,我想在zip文件中指定此类文件的完整路径。

有没有什么好方法可以完成这项任务?

非常感谢。

4 个答案:

答案 0 :(得分:10)

  1. 从zip文件中提取文件:

    解压缩file.zip文件/ you / want / to / extract / the_file.txt

  2. 修改the_file.txt

  3. 放回去:

    zip file.zip file / you / want / to / extract / the_file.txt

  4. 这应该让你开始。

答案 1 :(得分:4)

我没有任何便于测试的zip文件。但是继续使用holygeek的解决方案,我认为你甚至不必把它保存到磁盘上,而是通过一些管道运行它。

unzip -p file.zip /path/2/your/file.txt \
| sed 's/x/y/g' \
| zip file.zip /path/2/your/file.txt - 

注意最后一个' - '是关键的,它告诉zip从stdin读取它的数据。

这是来自zip -h2(完整帮助),在示例流下。

我希望这会有所帮助。

答案 2 :(得分:0)

您可以使用fuse-zip将zip文件安装到某个位置并编辑该文件。 看看http://code.google.com/p/fuse-zip/

fuse-zip my.zip /tmp_location
edit some file (sed ...)
fusermount -u /tmp_location

答案 3 :(得分:0)

您可以使用以下命令

unzip -jo MyZipFilw.zip * .xml -d XML

有关详细信息,请参阅博客:

http://arpitsjava.blogspot.in/