在多个子目录下执行多个shell个同名脚本

Execute multiple shell scripts of same name under several sub-directories

我正在使用父目录中的 shell 脚本来调用多个其他 shell 脚本,它们都具有相同的名称,但位于不同的子目录下。下面我详细说说:

Parent directory: Script deploy_modules.sh
SubDir A: deploy.sh
SubDir B: deploy.sh
SubDir C: deploy.sh
....
SubDir Z: deploy.sh

脚本 deploy_modules.sh 依次调用每个子目录的 deploy.sh,方法是进入该目录,调用脚本,然后退出并进入下一个。

有没有办法在一行命令中顺序执行所有 deploy.sh 文件?我需要该命令足够通用,以自动将任何新添加的子目录包含在另一个 deploy.sh 中,并且在删除一个或多个子目录时不会出错。

这会在子目录中找到所有 deploy.sh 脚本到当前目录所在的位置 - 并执行它们。

不做 cd 进入子目录:

for dep in */deploy.sh; do "$dep"; done

对每个子目录执行 cd

for dep in */deploy.sh; do (cd "$(dirname "$dep")"; ./deploy.sh) done

类似

find Parentdir -maxdepth 1 -name deploy.sh -exec {} \;

省略 maxdepth 选项,如果您还想在树中进一步包含部署脚本。

如果您需要从它所在的目录中执行部署脚本(尽管您在问题中没有提到这一点),请使用 -execdir 而不是 -exec