Groovy仅从各种文件夹获取指定文件
我在groovy脚本下运行,从AWSS3存储桶中获取动态值。 下面的脚本工作正常,它将获取所有对象,如下面的输出所示。 电流输出为Groovy仅从各种文件夹获取指定文件,groovy,jenkins-groovy,groovyshell,groovy-console,Groovy,Jenkins Groovy,Groovyshell,Groovy Console,我在groovy脚本下运行,从AWSS3存储桶中获取动态值。 下面的脚本工作正常,它将获取所有对象,如下面的输出所示。 电流输出为 test-bucket-name/test/folde1/1.war test-bucket-name/test/folder2/2.war test-bucket-name/test/folder3/3.txt 其中,我只想在“testbucket name”文件夹的输出中显示*.war文件,如下所示 1.war 2.war 我的剧本: def c
test-bucket-name/test/folde1/1.war
test-bucket-name/test/folder2/2.war
test-bucket-name/test/folder3/3.txt
其中,我只想在“testbucket name”文件夹的输出中显示*.war文件,如下所示
1.war
2.war
我的剧本:
def command = 'aws s3api list-objects-v2 --bucket=test-bucket-name --output=text'
def proc = command.execute()
proc.waitFor()
def output = proc.in.text
def exitcode= proc.exitValue()
def error = proc.err.text
if (error) {
println "Std Err: ${error}"
println "Process exit code: ${exitcode}"
return exitcode
}
return output.split()
请告诉我如何从测试bucket name文件夹中提取/仅显示war文件。首先,您需要筛选以
.war
结尾的条目。然后再次拆分每个条目(使用/
)并选择最后一个元素:
def input = '''test-bucket-name/test/folde1/1.war
test-bucket-name/test/folder2/2.war
test-bucket-name/test/folder3/3.txt'''
input
.split()
.findAll { it.endsWith('.war') }
.collect { it.split('/') }
.collect { it[-1] }
您可以添加
output.split().findAll{it.endsWith('.war')}
,这是筛选不以*.war
后缀结尾的条目的最简单、最简单的方法。