作为Gradle删除任务的一部分,我想从目录中删除所有以CSW
开头并以.tar.gz
结尾的tar文件。我怎样才能用Groovy实现它?
我尝试过类似下面的内容:
delete (file('delivery/').eachDirMatch(~/^CSW$.*.gz/))
但它不起作用。我如何在Groovy中使用正则表达式。与shell相比,它类似于rm -rf CSW*.tar.gz
答案 0 :(得分:2)
当你在问题中提到gradle时,我会用gradle解决方案回答。有点像:
myTask(type: Delete) {
delete fileTree(dir: 'delivery' , include: '**/CSW*.tar.gz')
}
其中delete
方法调用是配置时间,并在任务最终运行时配置将被删除的内容。有关详细信息,可能值得查看gradle docs on the fileTree method。
如果你需要保持纯粹的常规,你可以采取以下措施:
new AntBuilder().fileScanner {
fileset(dir: 'delivery', includes: '**/CSW*.tar.gz')
}.each { File f ->
f.delete()
}
如果此代码存在于gradle脚本中,我建议坚持使用选项1,因为它保留了gradle最新检查并且非常适合gradle configuration vs execution time pattern。
如果你真的想要使用正则表达式而不是上面的样式模式,那么你肯定可以做到这一点,尽管根据你的要求,我个人不会看到很多重点。