如何指定解压目标目录

如何指定解压目标目录

linux zip 命令中是否有选项,让我可以硬编码解压到的目标目录。例如,我想将 ./mydir 文件压缩到 myzipfile.zip 中,但我希望 unzip 命令创建一个特定目录“projx”,并将 ./mydir 下的文件展开到该目录中。

zip -r myzipfile.zip mydir (-option to expand into 'projx' when unzipped? )

答案1

没有这样的选项,至少对于 Info-ZIP 来说没有。您必须创建一个目录项目自己,将文件移动/复制到其中,然后将其传递给zip

如果目录已经存在,那么只需传递选项-dunzip指定要提取的目标目录。

答案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会创建目录。

但是,我想不出存储绝对路径的可能性,但无论如何这是一个坏主意。

相关内容