如何调用脚本在子文件夹目录树中批量执行(仅单次执行)
一次性在目录树所有子文件夹执行脚本的方法
嘿,这事儿好办,给你几个实用的一次性解决方案,分不同系统场景给你说清楚~
Linux/macOS/Windows WSL 用Bash实现
递归处理所有嵌套子文件夹
如果你的脚本是my_script.sh,要让它在当前目录下的每一层子文件夹里都执行一次,直接跑这个命令就行:
find . -type d -exec sh -c 'cd "$0" && /绝对路径/到你的/my_script.sh' {} \;
几个关键说明:
find . -type d:会扫遍当前目录(.)下所有的子目录,包括嵌套很深的那种-exec ... {} \;:把每个找到的目录路径传给后面的命令执行cd "$0":切换到当前遍历到的子目录里,这样脚本就会在该目录下生效- 把
/绝对路径/到你的/my_script.sh换成你脚本的真实路径,要是脚本就在当前根目录,也可以用./my_script.sh,但用绝对路径不容易出错
只处理直接子文件夹(不嵌套)
如果不需要处理深层嵌套的子目录,只针对当前目录下的一级子文件夹,用简单的for循环更直观:
for dir in */; do cd "$dir" && /绝对路径/到你的/my_script.sh && cd .. done
Windows 用PowerShell实现
如果你是Windows系统,用PowerShell来做也很简单:
Get-ChildItem -Directory -Recurse | ForEach-Object { Set-Location $_.FullName & "C:\绝对路径\到你的\脚本文件.ps1" Set-Location .. }
解释一下:
Get-ChildItem -Directory -Recurse:递归获取当前目录下所有子目录ForEach-Object:逐个遍历这些目录Set-Location:切换到目标子目录&:PowerShell里用来执行脚本文件的操作符,后面跟上脚本的绝对路径就行
几个小提醒
- 先给脚本加执行权限:Linux/macOS下跑
chmod +x /你的脚本路径/my_script.sh,不然会提示权限不够 - 建议先找个测试目录试一遍,确认没问题再在真实目录执行,避免误操作
- 如果脚本需要传参数,直接在命令里加就行,比如
/脚本路径/my_script.sh 参数1 参数2
内容的提问来源于stack exchange,提问作者wade812
相关产品推荐
相关产品推荐

