我正在尝试将解压缩的文件添加到现有的已压缩文件夹中new folder.zip
。zip -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)