在groovy中打印包含特定扩展名文件的文件夹

在groovy中打印包含特定扩展名文件的文件夹,groovy,Groovy,我想在groovy中找到包含特定扩展名文件的所有文件夹。我知道如何在Bash中执行此操作。我会用像这样的东西 find/文件夹类型f-名称“*.png”-printf“%h” 但是在groovy中我该怎么做呢? 所以如果文件夹结构是 文件夹 |-X |-pic1.png |-Y |-pic2.png |-Z |-A |-B |-pic3.png 在本例中,我希望的输出是X,X/Y,X/Z/B。我还希望将它们存储为用空格分隔的字符串,因此类似于name=X X/Y X/Z/B 我想做一些事情来获

我想在groovy中找到包含特定扩展名文件的所有文件夹。我知道如何在Bash中执行此操作。我会用像这样的东西

find/文件夹类型f-名称“*.png”-printf“%h”

但是在groovy中我该怎么做呢?
所以如果文件夹结构是

文件夹
|-X
|-pic1.png
|-Y
|-pic2.png
|-Z
|-A
|-B
|-pic3.png
在本例中,我希望的输出是X,X/Y,X/Z/B。我还希望将它们存储为用空格分隔的字符串,因此类似于name=X X/Y X/Z/B

我想做一些事情来获取所有文件和文件夹

def list=[]
def dir=新文件(“路径/到/文件夹/”)
dir.eachFileRecurse(FileType.FILES){file->
list获取每个文件的“父级”(文件夹),并将列表更改为一组以消除重复项:

def list=newlinkedhashset()
def dir=新文件(“C:/prog/utility”)
dir.eachFileRecurse(groovy.io.FileType.FILES){file->
列表
导入groovy.io.FileVisitResult
导入groovy.io.FileType
def列表=[]
新文件('path/to/folder/')。遍历(
类型:FileType.FILES,
名称过滤器:~/.\.png$/,//以png结尾
){f->

请不要用java标记来标记groovy问题。
import groovy.io.FileVisitResult
import groovy.io.FileType

def list=[]

new File('path/to/folder/').traverse(
    type         : FileType.FILES,
    nameFilter   : ~/.*\.png$/,   //ends with png
){f-> 
    list << f.parentFile          //add parent dir to list
    FileVisitResult.SKIP_SIBLINGS //don't continue dir scan on one file found
}