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

如何通过终端命令匹配任意子文件夹路径批量解压zip文件

批量解压任意子目录下zip文件的实现方法

你不需要单独写占位符匹配路径中的文件夹名,find 命令原生支持递归遍历指定目录下的所有子内容,完全可以满足需求。

先纠正你原有命令的问题:你之前写的 find ./ * / -name \*.zip -exec unzip {} \; 存在路径参数错误,多余的 * 和 / 会让find把当前目录下所有文件、系统根目录都纳入搜索范围,很容易误解压其他位置的zip包。


推荐使用的稳妥命令

直接指定Exercises为搜索根目录即可,命令会自动遍历下面所有层级的子文件夹(无论文件夹是什么名称),定位所有zip文件,并且把压缩包内容解压到对应zip所在的原目录,不会把所有解压后的文件都堆到你执行命令的当前路径:

find ~/Desktop/Exercises -type f -name "*.zip" -execdir unzip {} \;

各参数作用:

  • ~/Desktop/Exercises:find开始搜索的起始路径,按你自己的实际存储位置调整即可
  • -type f:限定只匹配普通文件,过滤掉名字带.zip后缀的文件夹,避免unzip执行时报错
  • -execdir unzip {} \;:先切换到每个zip文件所在的目录再执行解压操作,保证解压出的文件和原zip在同一文件夹下

匹配单层任意子文件夹的写法

如果你确认所有zip都只存放在Exercises下的一级子文件夹(也就是你给出的示例结构,没有更深的目录嵌套),可以直接用shell通配符*代替你写的**HERE**占位符,写法如下:

find ~/Desktop/Exercises/*/ -name "*.zip" -execdir unzip {} \;

这个写法里的*会自动匹配Exercises下所有一级子目录,和你预期的占位符效果完全一致。但它不会搜索更深层级的子文件夹,如果后续子目录里还有嵌套文件夹存zip就无法识别,更推荐使用前面的递归搜索写法。


内容的提问来源于stack exchange,提问作者user14826807

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.07 16:18:24