Iterating over directories to find pom.xml file
目前,我有一个命令,它循环访问目录列表(我不知道目录的名称),然后将cd导入目录,最终执行maven install命令。但是,我注意到只有一个目录包含pom.xml。不需要在其他目录上运行maven命令。有没有一种方法可以循环访问目录并在保存pom.xml的目录中停止,然后执行maven命令并中断循环?
1
| for d in */ ; do (cd"$d" && maven install -Dmaven.test.skip=true); done |
- 基于通配符匹配,我如何递归查找当前和子文件夹中的所有文件?,递归地查找与某个模式匹配的所有文件,从命令行在目录中查找文件等。
您可以用find命令替换您的循环。例如:
1
| find * -name pom.xml -execdir maven install -Dmaven.test.skip=True \; |
有关详细信息,请参见手册页。-execdir选项在包含pom.xm的目录中运行给定的命令。这将在整个目录树中重复出现;为了使其更准确地与shell脚本等效,可以限制其下降的深度:
1
| find * -name pom.xml -maxdepth 1 -execdir maven install -Dmaven.test.skip=True \; |
- 你知道我为什么要买这个吗?我通过workspace中的jenkins groovy脚本运行该命令。
- 这里有一个解释,如果您正在迭代您的$PATH中包含的目录,那么为什么-execdir是一个问题。