linux zip 命令中是否有选项,让我可以硬编码解压到的目标目录。例如,我想将 ./mydir 文件压缩到 myzipfile.zip 中,但我希望 unzip 命令创建一个特定目录“projx”,并将 ./mydir 下的文件展开到该目录中。
zip -r myzipfile.zip mydir (-option to expand into 'projx' when unzipped? )
答案1
没有这样的选项,至少对于 Info-ZIP 来说没有。您必须创建一个目录项目自己,将文件移动/复制到其中,然后将其传递给zip
。
如果目录已经存在,那么只需传递选项-d
来unzip
指定要提取的目标目录。
答案2
还有另一种方法。您可以使用以下方法压缩 zip 文件的所有内容。目标目录是“项目"并执行以下命令。
cd /projx && unzip -j /path/to/myzipfile.zip
选项-j被称为“垃圾路径”,只是将每个文件转储到当前目录中,而不是提取任何目录结构。
答案3
我不知道特定的命令行选项,但您可以使用以下命令来达到您的目标:
ln -s mydir projx
zip -r myzipfile.zip projx
rm projx
第一个命令创建一个符号链接,以便您mydir
也可以通过访问 中的文件projx
。然后使用Info-ZIP
(使用版本 2.31 测试)取消引用符号链接(这是默认设置,除非您指定-y
)并以递归方式存储文件:
adding: projx/ (stored 0%)
adding: projx/foo.1 (deflated 23%)
adding: projx/bar.2 (deflated 73%)
...
您会看到,文件夹名称也存储在文件中——因此提取时projx
会创建目录。
但是,我想不出存储绝对路径的可能性,但无论如何这是一个坏主意。