Выберите папку из дерева папок в s3, используя скрипт Bash - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть файлы, которые существуют по пути s3, как показано ниже: s3: // ttttt / 2018/11/01/02 -> (tttt = s3 bucket, 2018 = год, 11 = мотылек, 01 = день, час = 02)

У меня все время есть новые файлы, которые вставлены в s3, как показано ниже:

s3://tttt/2018/10/01/01/ls.s3.4cede5e7d25c.2018-10-01T01.00.tag_lre.txt.gz 
s3://tttt/2018/10/01/01/ls.s3.4cede5e7d25c.2018-10-01T01.00.tag_lre.txt.gz
s3://tttt/2018/10/01/02/ls.s3.4cede5e7d25c.2018-10-01T02.00.tag_lre.txt.gz

Я бы хотел получить через Bash скрипт: 1. максимальный год 2. максимальный месяц 3. максимальный день 4. максимальный час

Сценарий, который я создал, выглядит так (но не работает):

#!/bin/bash
result=`aws s3 ls "s3://tttt/2018/" | awk '{print $2}' |tail -n 1` 
result1=`aws s3 ls "s3://tttt/2018/${result:0:2}/" | awk '{print $NF-1}' |tail -n 1` 
result2=2018/${result:0:2}/${result1:0:2}/

Есть идеи, как это написать?

1 Ответ

0 голосов
/ 07 ноября 2018

Может не показывать вывод aws s3 ls "s3://tttt/2018/"|tail -1.
С

result="s3://tttt/2018/10/01/01/ls.s3.4cede5e7d25c.2018-10-01T01.00.tag_lre.txt.gz"

вы можете сделать

IFS=/ read -r s3 empty bucket year month day hour file <<< "${result}"

результат:

set | egrep "bucket=|year=|month=|day=|hour="
bucket=tttt
day=01
hour=01
month=10
year=2018
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...