使用Bash脚本从s3中的文件夹树中选择文件夹

时间:2018-11-07 05:22:08

标签: bash amazon-web-services amazon-s3

我有在s3路径下存在的文件,如下所示: s3:// ttttt / 2018/11/01/02->(tttt = s3 bucket,2018 = year,11 = moth,01 = day,hour = 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 :(得分:0)

无法显示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