zip 到特定目录?

zip 到特定目录?

是否可以在 bash 脚本中将文件添加到 zip 文件并指定目标目录?也就是说,如果zip结构包含目录,我可以选择我的文件进入哪个目录吗?命令行会是什么样子?

答案1

考虑一下您的 ZIP 文件如下所示:

foo/
|--- bar/
|    |--- file1.txt
|--- baz/
|    |--- file2.txt

并且你想添加文件3.txt富/巴兹/

创建您需要的目录结构(在此处)mkdir -p foo/baz/,并将文件复制到该位置。然后用于zip -ur foo.zip foo/更新您现有的存档foo.zip

我就是这样做的,因为它不需要解压。


演示

$> # setup
$> mkdir -p foo/bar/ foo/baz/
$> touch foo/bar/file1.txt foo/baz/file2.txt
$> zip -r foo.zip foo/
$> rm -rf foo/
$> zipinfo foo.zip
Archive:  foo.zip
Zip file size: 770 bytes, number of entries: 5
drwxrwxr-x  3.0 unx        0 bx stor 19-Nov-14 17:02 foo/
drwxrwxr-x  3.0 unx        0 bx stor 19-Nov-14 17:06 foo/bar/
-rw-rw-r--  3.0 unx        0 bx stor 19-Nov-14 17:03 foo/bar/file1.txt
drwxrwxr-x  3.0 unx        0 bx stor 19-Nov-14 17:03 foo/baz/
-rw-rw-r--  3.0 unx        0 bx stor 19-Nov-14 17:03 foo/baz/file2.txt
5 files, 0 bytes uncompressed, 0 bytes compressed:  0.0%

$> # solution
$> mkdir -p foo/baz/
$> cp path/to/file3.txt foo/baz/file3.txt
$> zip -ur foo.zip foo/
$> rm -rf foo/

$> # validation
$> zipinfo foo.zip
Archive:  foo.zip
Zip file size: 932 bytes, number of entries: 6
drwxrwxr-x  3.0 unx        0 bx stor 19-Nov-14 17:02 foo/
drwxrwxr-x  3.0 unx        0 bx stor 19-Nov-14 17:06 foo/bar/
-rw-rw-r--  3.0 unx        0 bx stor 19-Nov-14 17:03 foo/bar/file1.txt
drwxrwxr-x  3.0 unx        0 bx stor 19-Nov-14 17:03 foo/baz/
-rw-rw-r--  3.0 unx        0 bx stor 19-Nov-14 17:03 foo/baz/file2.txt
-rw-rw-r--  3.0 unx        0 bx stor 19-Nov-14 17:07 foo/baz/file3.txt
6 files, 0 bytes uncompressed, 0 bytes compressed:  0.0%

相关内容