假设我有一个目录结构如下:
project/
├── folder1/
│ └── mainline
| └── ...
├── folder2/
│ └── mainline
| └── ...
├── folder3/
│ └── mainline
| └── ...
.
.
.
└──folderN/
└── mainline
└── ...
我想ant clean
在每个mainline
文件夹中运行一个命令。我怎样才能做到这一点?
假设您想在显示的目录层次结构中的ant clean
每个mainline
目录中运行:
for mainline in project/folder*/mainline/; do
( cd "$mainline" && ant clean )
done
这将遍历每个mainline
目录的路径名。对于每个这样的路径名,循环的主体将更改为该目录并ant clean
在其中运行。
循环中该命令的括号在子外壳中运行这些命令。工作目录的更改是此子shell的本地内容(我们不必“跳出”我们cd
进入的目录)。
如果仅mainline
显示目录,则可以这样使用:find
find project -type d -name mainline -execdir sh -c 'cd mainline && ant clean' \;
这将找到在中或下调用的任何目录,然后在每个目录mainline
中project
执行ant clean
。该-execdir
操作是非标准的,但通常由find
实用程序在大多数Unices上实施。
您还可以查找默认使用的build.xml
文件,ant
并ant clean
在mainline
包含该文件的每个目录中执行:
find project -type f -path '*/mainline/build.xml' -execdir ant clean \;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句