是否可以在 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%