Groovy, чтобы получить только указать файл из разных папок - PullRequest
0 голосов
/ 17 октября 2018

Я использую скрипт ниже groovy для извлечения динамических значений из корзины aws s3.И ниже скрипт работает нормально, и он будет извлекать все объекты, как показано в выводе ниже.текущий вывод

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

Где я хочу отображать только * .war файлы в выводе из папки "test-bucket-name", как показано ниже.

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()

Пожалуйста, дайте мне знать, как извлечь / отобразить только файлы war из папки test-bucket-name.

1 Ответ

0 голосов
/ 18 октября 2018

Сначала вам нужно отфильтровать записи, заканчивающиеся на .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] }
...