Ant任务查找包含某个文件的所有子目录
Ant task to find all sub-directories that contain a certain file
我正在努力在 Ant 中解决这个任务。文档中的示例不多,我似乎无法在网上找到可靠的答案。
我需要扫描包含多个子目录的目录,例如
- 根目录
目标文件夹
- 文件夹 A
- 文件夹 B
- 文件夹 C
...
- 文件夹 Z
我需要从 Root 运行 build.xml,并使用任务扫描 TargetFolder
的所有子目录(因此文件夹 A、B、C 等),如果目录包含一个文件,foo.txt
,运行 该目录的 <apply>
任务。
我可以执行 <dirset>
并获取子目录列表。我可以做一个单独的 <fileset>
来扫描 TargetFolder
并获取所有出现的 foo.txt
。但是,我不知道如何组合这些东西,或者如何进行附加到 <apply>
任务的简单文件检查。
这是一种方法。像你说的那样使用 dirset,使用 <present>
选择器:
<dirset id="dirs" dir="Root">
<present targetdir="Root">
<mapper type="glob" from="*" to="*/foo.txt" />
</present>
</dirset>
<apply executable="ls">
<arg value="-alF" />
<dirset refid="dirs" />
</apply>
您可以将两者合并为一个任务:
<apply executable="ls">
<arg value="-alF" />
<dirset id="dirs" dir="Root">
<present targetdir="Root">
<mapper type="glob" from="*" to="*/foo.txt" />
</present>
</dirset>
</apply>
我正在努力在 Ant 中解决这个任务。文档中的示例不多,我似乎无法在网上找到可靠的答案。
我需要扫描包含多个子目录的目录,例如
- 根目录
目标文件夹
- 文件夹 A
- 文件夹 B
- 文件夹 C
...
- 文件夹 Z
我需要从 Root 运行 build.xml,并使用任务扫描 TargetFolder
的所有子目录(因此文件夹 A、B、C 等),如果目录包含一个文件,foo.txt
,运行 该目录的 <apply>
任务。
我可以执行 <dirset>
并获取子目录列表。我可以做一个单独的 <fileset>
来扫描 TargetFolder
并获取所有出现的 foo.txt
。但是,我不知道如何组合这些东西,或者如何进行附加到 <apply>
任务的简单文件检查。
这是一种方法。像你说的那样使用 dirset,使用 <present>
选择器:
<dirset id="dirs" dir="Root">
<present targetdir="Root">
<mapper type="glob" from="*" to="*/foo.txt" />
</present>
</dirset>
<apply executable="ls">
<arg value="-alF" />
<dirset refid="dirs" />
</apply>
您可以将两者合并为一个任务:
<apply executable="ls">
<arg value="-alF" />
<dirset id="dirs" dir="Root">
<present targetdir="Root">
<mapper type="glob" from="*" to="*/foo.txt" />
</present>
</dirset>
</apply>