如何使用Ant删除除最新2个文件以外的所有文件
使用Ant,我必须从备份文件夹中删除除最新2个文件以外的所有文件 我试图否定如何使用Ant删除除最新2个文件以外的所有文件,ant,Ant,使用Ant,我必须从备份文件夹中删除除最新2个文件以外的所有文件 我试图否定last count=“2”,但找不到正确的资源顺序 目前我正在这样做: <delete verbose="true"> <difference> <resources> <fileset dir="${backup}"/> </resources> <last count="
last count=“2”
,但找不到正确的资源顺序
目前我正在这样做:
<delete verbose="true">
<difference>
<resources>
<fileset dir="${backup}"/>
</resources>
<last count="2">
<sort>
<date/>
<resources>
<fileset dir="${backup}"/>
</resources>
</sort>
</last>
</difference>
</delete>
有更简单的方法吗?我建议使用文件集选择器来选择应该对哪些文件执行操作 如果需求超出了ANT的正常功能,您可以编写标准脚本。以下示例基于日期删除文件:
<delete verbose="true">
<allbutlast count="2">
<sort>
<date/>
<resources>
<fileset dir="${backup}"/>
</resources>
</sort>
</allbutlast>
</delete>
这个问题导致了一个已应用于Ant 1.9.5(在撰写本文时尚未发布)的问题。直到1.9.4,没有更好的纯Ant解决方案,除非您想自己实现一个资源集合 从Ant1.9.5开始,您可以使用
<delete verbose="true">
<allbutlast count="2">
<sort>
<date/>
<resources>
<fileset dir="${backup}"/>
</resources>
</sort>
</allbutlast>
</delete>
我非常喜欢Stefan Bodewig给出的答案,我迫不及待地想了解Ant 1.9.6(撰写本文时的当前版本),但我已经被Ant 1.9.4锁定了。所以我写了这个小东西,删除旧目录,但保留最新的5。也许这对其他人也有用 PS
在我编写脚本时,我没有注意到马克·奥康纳提出的解决方案有多么强大。我可能应该将我的解决方案合并到脚本选择器中,但现在为时已晚-( 如果您想知道这是什么:它是一个JavaScript脚本,在。我更喜欢Groovy或Ruby,但我选择了JavaScript,因为它已经在我当前依赖的工具包中(有关更多详细信息,请参阅)
file2.lastModified()){
返回-1
}
返回0;
}
//排序表
目录.排序(compareByLastModified)
//准备“删除”任务
var delTask=project.createTask(“删除”);
delTask.setQuiet(true);
//删除列表中除最后N个目录以外的所有目录
对于每个(目录中的var dir.slice(N)){
//println(“del”+dir.toString())
delTask.setDir(dir)
delTask.perform()
}
]]>
我非常喜欢Stefan Bodewig给出的答案,我迫不及待地想了解Ant 1.9.6(撰写本文时的当前版本),但我已经被Ant 1.9.4锁定了。所以我写了这个小东西,删除旧目录,但保留最新的5。也许这对其他人也有用
PS在我编写脚本时,我没有注意到马克·奥康纳提出的解决方案有多么强大。我可能应该将我的解决方案合并到脚本选择器中,但现在为时已晚-( 如果您想知道这是什么:它是一个JavaScript脚本,在。我更喜欢Groovy或Ruby,但我选择了JavaScript,因为它已经在我当前依赖的工具包中(有关更多详细信息,请参阅)
file2.lastModified()){
返回-1
}
返回0;
}
//排序表
目录.排序(compareByLastModified)
//准备“删除”任务
var delTask=project.createTask(“删除”);
delTask.setQuiet(true);
//删除列表中除最后N个目录以外的所有目录
对于每个(目录中的var dir.slice(N)){
//println(“del”+dir.toString())
delTask.setDir(dir)
delTask.perform()
}
]]>
我认为没有比这更简单的了。您可能希望提取文件集
,并为其提供一个id,以使其干燥并只扫描备份
。另外,包装资源
容器是冗余的,但没有根本不同的方法。Ant的一个增强请求是更容易使用“除最后两个之外的所有”属性-可能对第一个属性使用负数,或者使用单独的属性。谢谢@StefanBodewig。我在上提出了一个增强请求。刚刚解决为已修复,在Ant 1.9.5中,您可以使用,我认为没有比这更简单的了。您可能希望提取文件集
,并为其提供一个id,以使其干燥并只扫描备份
。另外,包装资源
容器是冗余的,但没有根本不同的方法。Ant的一个增强请求是更容易使用“除最后两个之外的所有”属性-可能对第一个属性使用负数,或者使用单独的属性。谢谢@StefanBodewig。我在上提出了一个增强请求。刚刚解决为已修复,在Ant 1.9.5中,您可以使用谢谢,我已改为使用文件集选择器。谢谢你的脚本想法,虽然内置资源对我来说工作会少一些。谢谢,我已经开始使用文件集选择器了。谢谢你的脚本想法,虽然内置资源对我来说工作更少。