Gradle Groovy中的Regex目录匹配

Gradle Groovy中的Regex目录匹配,gradle,groovy,Gradle,Groovy,作为gradledelete任务的一部分,我想从目录中删除所有以CSW开头,以.tar.gz结尾的tar文件。如何使用Groovy实现它 我尝试了以下方法: delete (file('delivery/').eachDirMatch(~/^CSW$.*.gz/)) 但它不起作用。如何在Groovy中使用正则表达式。与shell相比,它类似于rm-rf CSW*.tar.gz当您在问题中提到gradle时,我将用gradle解决方案回答。大致如下: myTask(type: Delete)

作为gradledelete任务的一部分,我想从目录中删除所有以
CSW
开头,以
.tar.gz
结尾的tar文件。如何使用Groovy实现它

我尝试了以下方法:

delete (file('delivery/').eachDirMatch(~/^CSW$.*.gz/))

但它不起作用。如何在Groovy中使用正则表达式。与shell相比,它类似于
rm-rf CSW*.tar.gz

当您在问题中提到gradle时,我将用gradle解决方案回答。大致如下:

myTask(type: Delete)  {
  delete fileTree(dir: 'delivery' , include: '**/CSW*.tar.gz')
}
new AntBuilder().fileScanner {
  fileset(dir: 'delivery', includes: '**/CSW*.tar.gz')
}.each { File f -> 
  f.delete()
}
其中,
delete
方法调用是配置时间,并配置任务最终运行时将删除的内容。有关详细信息,可能值得浏览一下

如果您需要保持纯粹的groovy,您可以采取以下措施:

myTask(type: Delete)  {
  delete fileTree(dir: 'delivery' , include: '**/CSW*.tar.gz')
}
new AntBuilder().fileScanner {
  fileset(dir: 'delivery', includes: '**/CSW*.tar.gz')
}.each { File f -> 
  f.delete()
}
如果这段代码存在于gradle脚本中,我建议使用选项一,因为它保留了gradle的最新检查,并且非常适合gradle


如果你真的想使用regex而不是上面的样式模式,你当然可以这样做,不过我个人认为,考虑到你的要求,没有什么意义

您想要目录匹配吗?听起来像是文件匹配我想要匹配的目录实际上在名为
delivery