首页 > 解决方案 > Ant任务查找包含某个文件的所有子目录

问题描述

我正在努力在 Ant 中找出这个任务。文档中的示例并不多,我似乎无法在网上找到可靠的答案。

我需要扫描一个包含多个子目录的目录,例如

我需要从 Root 运行 build.xml,并通过任务扫描TargetFolder(文件夹 A、B、C 等)的所有子目录,如果目录包含文件,则为该目录foo.txt运行<apply>任务。

我可以做一个<dirset>并获得子目录的列表。我可以单独<fileset>进行扫描TargetFolder并获取所有出现的foo.txt. 但是,我不知道如何组合这些东西,或者如何进行附加到<apply>任务的简单文件检查。

标签: filedirectoryant

解决方案


这是一种方法。如您所说,使用选择器使用 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>

推荐阅读