如何将压缩存档中的特定文件夹提取到给定目录?
我尝试使用
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/