如何仅将压缩存档中的特定文件夹提取到给定目录?

如何仅将压缩存档中的特定文件夹提取到给定目录?

如何将压缩存档中的特定文件夹提取到给定目录?

我尝试使用

unzip "/path/to/archive.zip" "in/archive/folder/" -d "/path/to/unzip/to"

但这只会在我希望将其解压到的路径上创建文件夹,而不会执行其他任何操作。

答案1

unzip /path/to/archive.zip "in/archive/folder/*" -d "/path/to/unzip/to"

答案2

尝试:

unzip /path/to/archive.zip 'in/archive/folder/*' -d /path/to/unzip/to

答案3

现有的两个答案都是正确的,但是指定目标目录有点棘手,应该更好地澄清。

假设/target/root/是原始解压缩操作的目标目录,例如:

unzip -qq src.zip -d "/target/root/"

/target/root/然后,即使我们只想提取特定的子目录,我们也需要使用与目标目录相同的内容,就像解压缩的方式一样:

unzip -qq src.zip "sub/dir/*" "/target/root/"

毕竟规则其实很简单,-d对选项使用相同的目标根目录

顺便说一句,该-qq选项使解压缩非常安静,请随意删除它。

答案4

我必须同时指定两个***/*每个path/in/archive/

unzip src.zip 'path/*' 'path/**/*' -d /target/dir/

这有效。

忽略其中任何一个,都会跳过任何存在的文件。

例子:

unzip aar.aar 'res/**/*' 'res/*' -d /lib/res/

相关内容