要像 tar 一样获取新的 zip 文件,我是否必须在执行rm foo.zip
之前执行zip
?
$ mkdir foo; touch foo/bar
$ zip -r foo.zip foo
adding: foo/ (stored 0%)
adding: foo/bar (stored 0%)
$ rm foo/bar; touch foo/baz
$ zip -r foo.zip foo
adding: foo/ (stored 0%)
adding: foo/baz (stored 0%)
$ unzip -l foo.zip
Archive: foo.zip
Length Date Time Name
--------- ---------- ----- ----
0 2011-10-27 07:49 foo/
0 2011-10-27 07:49 foo/bar
0 2011-10-27 07:49 foo/baz
--------- -------
0 3 files
Run Code Online (Sandbox Code Playgroud)
Pau*_*aul 47
使用 -FS 选项“文件同步”
zip -FSr foo.zip foo
Run Code Online (Sandbox Code Playgroud)
这会将文件夹中的所有新文件添加到 zip,并从 zip 中删除不在文件夹中的所有文件。
使用该-FS
选项(或删除旧 ZIP 文件)的替代方法是通过写入 stdout 并将其重定向到指定文件来覆盖现有 ZIPzip
文件:
zip -r - foo >foo.zip
-r : Add directory and its contents
- : Instead of writing ZIP to a file, write to stdout
foo : The directory to be zipped
>foo.zip : Redirect stdout to file foo.zip
Run Code Online (Sandbox Code Playgroud)
如果foo.zip
存在,它将被 shell 重定向覆盖,这意味着您每次都会 100% 地获得一个全新的 ZIP 文件。
归档时间: |
|
查看次数: |
32382 次 |
最近记录: |