Groovy仅获取来自各个文件夹的指定文件

时间:2018-10-17 12:43:46

标签: groovy jenkins-groovy groovyshell groovy-console

我在groovy脚本下运行,以从aws s3存储桶获取动态值。 下面的脚本运行良好,它将获取所有对象,如下面的输出所示。 当前输出为

  test-bucket-name/test/folde1/1.war
  test-bucket-name/test/folder2/2.war
  test-bucket-name/test/folder3/3.txt

我只想在“ test-bucket-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()

请让我知道如何仅从test-bucket-name文件夹中提取/显示war文件。

1 个答案:

答案 0 :(得分:1)

首先,您需要过滤以.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] }