是否可以替换zip文件中的文件而不解压缩删除旧文件添加新文件并重新拉回?
原因是我有一个zip文件非常大,zip文件中有一个xml,我有时需要更新.拉开拉链并重新拉链需要很长时间.所以我想通过脚本替换zip中的一个xml.我已经检查了xml的更新.
那么可以在不解压缩和重新压缩的情况下更换一个xml吗?
对不起,我会使用zip命令做这样的事情但问题是脚本实际上是一个Android手机和zip不是一个命令我可以使用不幸抱歉我离开了那个.如果我可以,我肯定会使用zip,但我只有droid解压缩然后在busybox中有tar但是tar不能做我需要的东西
cay*_*ann 64
我发现Linux zip文件很难替换zip中的单个文件.jarJava Development Kit中的实用程序可能更容易.考虑WEB/web.xml在JAR文件中更新的常见任务(这只是一个zip文件):
jar -uf path/to/myapp.jar -C path/to/dir WEB-INF/web.xml
这path/to/dir是包含WEB-INF目录(又包含web.xml)的目录的路径.
Ple*_*and 52
来自zip(1):
当给定现有zip存档的名称时,zip将替换zip存档中具有相同名称的条目或添加新名称的条目.
因此,只需zip像通常那样使用该命令来创建仅包含该文件的新.zip文件,但您指定的.zip文件名将是现有存档.
use*_*048 37
请尝试以下方法:
zip [zipfile] [file to update] 
一个例子:
$ zip test.zip test/test.txt
updating: test/test.txt (stored 0%)
tra*_*nal 13
我知道这是一个老问题,但我想做同样的事情.更新zip存档中的文件.上述答案都没有真正帮助我.
这就是我做的.创建临时目录abc.复制file.zip到abc并提取该目录中的文件.我编辑了我想编辑的文件.然后在进入时abc,运行以下命令
user@host ~/temp/abc $ zip -u file.zip
updating: content/js/ (stored 0%)
updating: content/js/moduleConfig.js (deflated 69%)
-u switch将查找已更改/新文件,并将添加到zip存档.
Eth*_*der 10
使用更新标志: -u
例:
zip -ur existing.zip myFolder
此命令将压缩并添加myFolder(及其内容)到existing.zip.
高级用法:
更新标志实际上将传入文件与现有文件进行比较,并将添加新文件或更新现有文件.
因此,如果要添加/更新zip文件中的特定子目录,只需根据需要更新源,然后使用该-u标志重新压缩整个源.仅压缩已更改的文件.
如果您无权访问源文件,则可以解压缩zip文件,然后更新所需的文件,然后使用该-u标志重新压缩.同样,只会压缩更改的文件.
例:
原始来源结构
ParentDir
??? file1.txt
??? file2.txt
??? ChildDir
?   ??? file3.txt
?   ??? Logs
?   ?   ??? logs1.txt
?   ?   ??? logs2.txt
?   ?   ??? logs3.txt
更新的源结构
ParentDir
??? file1.txt
??? file2.txt
??? ChildDir
?   ??? file3.txt
?   ??? Logs
?   ?   ??? logs1.txt
?   ?   ??? logs2.txt
?   ?   ??? logs3.txt 
?   ?   ??? logs4.txt <-- NEW FILE 
用法
$ zip -ur existing.zip ParentDir 
> updating: ParentDir/ChildDir/Logs (stored 0%)
>   adding: ParentDir/ChildDir/Logs/logs4.txt (stored 96%)