14

我想删除根目录下名称中包含“tmp”的所有目录和子目录。这也应该包括任何 .svn 文件。我的第一个猜测是使用

<delete>
    <dirset dir="${root}">
          <include name="**/*tmp*" />
    </dirset>
</delete>

这似乎不起作用,因为您不能将dirseta 嵌套在delete标签中。

这是一种正确的方法,还是我应该做其他事情?

  • 蚂蚁版本 == 1.6.5。
  • java版本== 1.6.0_04
4

3 回答 3

23

这是对我有用的答案:

<delete includeemptydirs="true">
    <fileset dir="${root}" defaultexcludes="false">
       <include name="**/*tmp*/**" />
    </fileset>
</delete>

我还有一个额外的复杂性,我也需要删除.svn目录。使用defaultexcludes,.*文件被排除在外,因此空目录并不是真正的空目录,因此也没有被删除。

属性includeemptydirs(thanks, flicken, XL-Plüschhase) 允许尾随**通配符匹配空字符串。

于 2008-10-01T21:00:10.797 回答
5

尝试:

<delete includeemptydirs="true">
    <fileset dir="${root}">
          <include name="**/*tmp*/*" />
    </fileset>
</delete>

谢谢你!

于 2008-10-01T17:08:24.710 回答
5

我只是想补充一点,对我有用的部分解决方案是附加/**到包含路径的末尾。我尝试了以下方法来删除 Eclipse .settings 目录:

<delete includeemptydirs="true">
    <fileset dir="${basedir}" includes"**/.settings">
</delete>

但直到我将其更改为以下内容时它才起作用:

<delete includeemptydirs="true">
    <fileset dir="${basedir}" includes"**/.settings/**">
</delete>

出于某种原因,附加/**到路径会删除匹配目录中的文件、所有子目录、子目录和匹配目录中的所有文件。追加/*只会删除匹配目录中的文件,但不会删除匹配目录。

于 2010-02-25T19:07:36.063 回答