我想删除根目录下名称中包含"tmp"的所有目录和子目录.这应该包括任何.svn文件.我的第一个猜测是使用
<delete>
<dirset dir="${root}">
<include name="**/*tmp*" />
</dirset>
</delete>
Run Code Online (Sandbox Code Playgroud)
这似乎不起作用,因为您无法dirset在delete标记中嵌套.
这是一种正确的方法,还是我应该做其他事情?
jam*_*esh 23
这是对我有用的答案:
<delete includeemptydirs="true">
<fileset dir="${root}" defaultexcludes="false">
<include name="**/*tmp*/**" />
</fileset>
</delete>
Run Code Online (Sandbox Code Playgroud)
我有一个额外的复杂功能,我需要删除.svn目录.有了defaultexcludes,.*文件被排除,所以空目录不是真的空,所以没有被删除.
属性includeemptydirs(thanks,flicken,XL-Plüschhase)使尾随**通配符与空字符串匹配.
尝试:
<delete includeemptydirs="true">
<fileset dir="${root}">
<include name="**/*tmp*/*" />
</fileset>
</delete>
Run Code Online (Sandbox Code Playgroud)
谢谢你!
小智 5
我只是想补充一点,对我有用的解决方案部分附加/**到包含路径的末尾。我尝试了以下删除 Eclipse .settings 目录:
<delete includeemptydirs="true">
<fileset dir="${basedir}" includes"**/.settings">
</delete>
Run Code Online (Sandbox Code Playgroud)
但直到我将其更改为以下内容后,它才起作用:
<delete includeemptydirs="true">
<fileset dir="${basedir}" includes"**/.settings/**">
</delete>
Run Code Online (Sandbox Code Playgroud)
由于某种原因,追加/**到路径会删除匹配目录中的文件、所有子目录中的所有文件、子目录和匹配目录。追加/*只会删除匹配目录中的文件,但不会删除匹配目录。
| 归档时间: |
|
| 查看次数: |
26823 次 |
| 最近记录: |