如何指定解压缩目标目录


21

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

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

Answers:


18

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

如果该目录已经存在,那么就通过选项-dunzip指定目标目录提取。


4

为此,还有另一种方法。您可以使用以下方法展平zip文件的全部内容。目标目录为“ projx ”并执行以下命令。

cd /projx && unzip -j /path/to/myzipfile.zip

选项-j称为“垃圾路径”,仅将每个文件转储到当前目录中,而不提取任何目录结构。


0

我不知道特定的命令行选项,但是您可以使用以下命令达到目标:

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就会创建该目录。

但是,我无法考虑存储绝对路径的可能性,但这还是一个坏主意。


通过指定option,绝对路径仅适用于MacOS -jj。在其他操作系统上,仅-j支持(并-jj解释为-j)选项,该选项消除了任何前导路径,从而导致了相反的情况(非常聪明的设计...)。
scai
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.