我有一个场景,我必须首先创建一个 zip 文件,然后,当我的文件从另一个位置到达时,它们将被添加到 zip 中。
第二部分是通过-u
参数完成的:
zip -u {{project}}.zip {{file}}
Run Code Online (Sandbox Code Playgroud)
--help
因为这个命令也不是很有帮助:
user@host:~# zip --help
Copyright (c) 1990-2008 Info-ZIP - Type 'zip "-L"' for software license.
Zip 3.0 (July 5th 2008). Usage:
zip [-options] [-b path] [-t mmddyyyy] [-n suffixes] [zipfile list] [-xi list]
The default action is to add or replace zipfile entries from list, which
can include the special name - to compress standard input.
If zipfile and list are omitted, zip compresses stdin to stdout.
-f freshen: only changed files -u update: only changed or new files
-d delete entries in zipfile -m move into zipfile (delete OS files)
-r recurse into directories -j junk (don't record) directory names
-0 store only -l convert LF to CR LF (-ll CR LF to LF)
-1 compress faster -9 compress better
-q quiet operation -v verbose operation/print version info
-c add one-line comments -z add zipfile comment
-@ read names from stdin -o make zipfile as old as latest entry
-x exclude the following names -i include only the following names
-F fix zipfile (-FF try harder) -D do not add directory entries
-A adjust self-extracting exe -J junk zipfile prefix (unzipsfx)
-T test zipfile integrity -X eXclude eXtra file attributes
-y store symbolic links as the link instead of the referenced file
-e encrypt -n don't compress these suffixes
-h2 show more help
Run Code Online (Sandbox Code Playgroud)
我用肮脏的方式做到了:
emptyfile
创建了一个名为其中一个字节(空白)的文件。
然后我将该文件添加到 zip 文件中:
zip -q {{project}}.zip emptyfile
Run Code Online (Sandbox Code Playgroud)
最后删除它:
zip -dq {{project}}.zip emptyfile
Run Code Online (Sandbox Code Playgroud)
(如果-q
省略,您将收到警告zip warning: zip file empty
:)
这样我就得到了一个可以-u
更新的空 zip 文件。
所有这些都可以转换为 oneliner(来自 GaspardP 的想法):
echo | zip -q > {{project}}.zip && zip -dq {{project}}.zip -
Run Code Online (Sandbox Code Playgroud)
有没有更优雅的方法来做到这一点?
归档时间: |
|
查看次数: |
3283 次 |
最近记录: |