假设我有一个结构如下的目录:
project/
├── folder1/
│ └── mainline
| └── ...
├── folder2/
│ └── mainline
| └── ...
├── folder3/
│ └── mainline
| └── ...
.
.
.
└──folderN/
└── mainline
└── ...我想在每个ant clean文件夹中运行一个命令,比如mainline。我该怎么做?
发布于 2019-11-06 09:35:33
假设您希望在您显示的目录层次结构中的每个ant clean目录中运行D0:
for mainline in project/folder*/mainline/; do
( cd "$mainline" && ant clean )
done这将遍历每个mainline目录的路径名。对于每个这样的路径名,循环的主体将更改到该目录,并在其中运行ant clean。
循环中命令周围的括号在子shell中运行这些命令。工作目录的更改是这个子shell的本地内容(我们不需要“跳出”cd进入的目录)。
如果您显示的mainline目录是唯一这样的目录,那么您可以这样使用find:
find project -type d -name mainline -execdir sh -c 'cd mainline && ant clean' \;这将在mainline中或在project下找到任何名为ant clean的目录,然后在每个目录中执行D11。-execdir操作是非标准的,但通常由find实用程序在大多数Unices上实现。
您还可以查找ant默认使用的D15文件,并在包含此类文件的每个mainline目录中执行ant clean:
find project -type f -path '*/mainline/build.xml' -execdir ant clean \;发布于 2019-11-06 09:33:39
这样做吧:
$ cd project/
$ find . -type d -name "mainline" -exec ls -l {} \;这将在当前文件夹(project/)中找到名为"mainline“的目录,并在每个目录上执行ls -l。
https://unix.stackexchange.com/questions/550628
复制相似问题