2017-02-13 85 views
0

作为Gradle删除任务的一部分,我想从目录中删除所有以CSW开头并以.tar.gz结尾的tar文件。我如何使用Groovy实现它?Groovy中的正则表达式匹配

我试过类似下面:

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

但它不工作。我如何在Groovy中使用正则表达式。与shell相比,它有点像rm -rf CSW*.tar.gz

+0

你想要目录匹配吗?这听起来像文件匹配 –

+0

我想要匹配的目录实际上在名为'delivery'的目录内 –

回答

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这个剧本我会建议与方案一坚持,因为它保留了gradle这个先进日期检查,并很好地适合于gradle configuration vs execution time pattern

如果你真的想去正则表达式,而不是上述样式模式,你当然可以做到这一点,但我个人没有看到你的要求很多的一点。