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

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

我正在尝试将解压缩的文件添加到现有的已压缩文件夹中new folder.zipzip -r new folder.zip添加一些解压后的文件可以使用吗?该命令会压缩文件夹吗?有没有其他方法可以做到这一点?

答案1

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

答案2

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

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

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

答案3

我成功地使用了该zip命令。与生长(-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

答案4

如果您的 zip 存档在同一位置有很多文件,并且您想将它们全部复制到存档中,您可以执行以下操作:

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

这将使用除 zip 文件本身之外找到的所有文件-u递归(选项)更新您的 zip 文件(选项)(是 zip 文件的否定)-r!

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

rm !(zipfile.zip)

相关内容