我有一个闭包来查找名称与模式匹配并包含给定字符串的所有文件:
def path = "path/to/logs"
def namePatten = ~/.*.log/
def contentPattern ~/.*ERROR.*/
def result = []
new File(path).eachDirRecurse { File dir ->
dir.eachFileMatch(namePattern) { File f ->
f.eachLine { String l ->
if(l.matches(contentPattern)) {
result.add(f)
return
}
}
}
但我很确定我可以有一些更短的东西(嘿,否则我可以使用普通的 java :))
我试图找到一种方法来写这个有点像这样:
result = new File(path).eachFileRecurse.filter(filePattern).grep(contentPattern)
就像我使用 guava 或类似的流利界面收集工具所做的那样。
您将如何以简洁但仍然可读的方式编写此闭包?