You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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.png
  • dir2/img1.png

另外补充个小提醒:如果是在Linux/macOS下用p7zip(也就是7z命令),语法和这个几乎一样,只是路径分隔符用/就行,参数逻辑完全相同。

备注:内容来源于stack exchange,提问作者reYal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 08:13:03