将解压缩的文件添加到压缩的文件夹


32

我正在尝试将解压缩的文件添加到现有的已压缩文件夹中new folder.zipzip -r new folder.zip将一些解压缩的文件添加到文件后,是否可以使用?此命令会压缩文件夹吗?还有其他选择吗?


您可以通过管道传输,解压缩原始文件| 然后按照创建全新文件的方式压缩整个内容。我不确定您将如何使用单个命令执行此操作。
unixmiah 2014年

Answers:


44

使用更新标志: -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%)

谢谢!如何 zip中指定要添加到的文件夹?
Aaron Esau)

我添加了一个部分来回答您的问题。:)
Ethan Strider

0

我相信您可以使用以下命令添加文件:

zip -r zipfile.zip newfile.txt newfile1.txt

-rzip命令的选项允许您添加文件。


-r是递归选项。
ctrl-alt-delor 2014年

@理查德,我要解决这个问题。给我一些
ryekayo 2014年

@richard,原来的源我从说,你可以使用-r命令来修改现有的压缩文件:linuxnix.com/2014/05/...
ryekayo

2
添加—更新现有条目并添加新文件。如果存档不存在,请创建它。这是默认模式。(不需要替换或添加文件的选项。-r可以在添加目录时使用,也可以在不添加目录时使用。嗯,在任何时候都不想仅添加目录且不添加任何内容的情况下,几乎所有时间所以总之这个例子是正确的,但是解释是错误的。)(最好测试一下,这只是我对手册的解释)。
ctrl-alt-delor 2014年

2
出于安全原因,您确定要修改现有存档吗?相反,我至少要制作一份安全副本,进行添加,然后在提交新副本之前重新检查档案的完整性。
mdpc


0

我成功使用了该zip命令。使用grow(-g)选项,以添加folder1/folder2包含文件fileA.txt和的子文件夹fileB.txt

zip -gr folder.zip folder1/folder2

-r表示递归目录。

根据我的理解,-g应该增长zip文件,而不是创建新的zip文件(这对于非常大的zip归档文件可能很有用)。如果出现问题,您可以首先尝试使用以下方法在folder.zip中创建子文件夹:

zip -g folder.zip folder1
zip -g folder.zip folder2

0

如果您的zip存档文件位于同一位置,并且您想将所有文件都复制到存档文件中,则可以执行以下操作:

zip -ur zipfile.zip !(zipfile.zip)

这会用找到的所有文件(除了zip文件本身之外)(是zipfile的否定-u项)递归地更新zip文件(该选项)(该选项)。-r!

然后,您可以按照上述相同的规则简单地删除除zip文件以外的所有文件:

rm !(zipfile.zip)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.