使用7z-bash提取指定类型文件并保留目录结构的方法咨询
7z-bash提取指定类型文件并保留目录结构的方法咨询
嘿,这问题我之前折腾过,完全不用手动一个个提取,7z本身就有办法搞定!
你现在遇到的问题,是因为把*.png直接放在命令末尾的写法,会让7z把所有匹配的PNG文件直接提取到目标目录的根目录,完全忽略它们在压缩包里的原始路径,自然就会重名覆盖了。
其实只要换个参数写法就能解决,用-i(include)参数来指定你要提取的文件类型,这样7z就会保留原始目录结构了。正确的命令应该是这样:
7z.exe x "$filename" -o"$destiny" -r -i!*.png
我给你拆解下关键参数:
-i!*.png:这是核心,-i表示只包含指定模式的文件,!是7z里通配符的前缀,这样就能精准匹配所有PNG文件,同时保留它们在压缩包里的原始路径-o"$destiny":给输出目录加引号,避免路径里有空格时出问题-r:依然保留递归处理子目录的功能
用这个命令处理你说的压缩包结构,输出就会完全符合你的预期:
- 根目录的
img1.png dir1/img1.png、dir1/img2.pngdir2/img1.png
另外补充个小提醒:如果是在Linux/macOS下用p7zip(也就是7z命令),语法和这个几乎一样,只是路径分隔符用/就行,参数逻辑完全相同。
备注:内容来源于stack exchange,提问作者reYal
相关产品推荐
相关产品推荐

