如何使用Ant删除目录的目录集?

时间:2020-03-06 14:59:13  来源:igfitidea点击:

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

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

这似乎不起作用,因为我们无法在delete标签中嵌套dirset

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

  • 蚂蚁版本== 1.6.5.
  • Java版本== 1.6.0_04

解决方案

尝试:

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

谢谢你甩了!

这是对我有用的答案:

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

我也需要删除.svn目录,这又增加了一个复杂的问题。使用defaultexcludes时,排除了。*文件,因此空目录并不是真正的空目录,因此也不会被删除。

属性includeemptydirs(感谢,轻弹,XL-Plschhase)使结尾的**可通配符匹配空字符串。

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

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

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

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

由于某种原因,在路径后添加/ **会删除匹配目录中的文件,所有子目录,子目录和匹配目录中的所有文件。添加/ *只会删除匹配目录中的文件,而不会删除匹配目录。