AWS S3 CLI ls将没有前缀的目录列出到数组(和where子句)中

时间:2019-06-24 20:53:12

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

从EC2控制台终端,我试图将S3存储桶目录名称的一部分列出到一个数组中,该数组不包含前缀“ date =”,但无法找出完整的解决方案。

我已经尝试了以下代码并逐渐接近:

esttab matrix(A), title("Summary results") ///
                  mlabels(, none) ///
                  varlabels(r1 " " r2 " " r3 " ") ///
                  tex

\begin{table}[htbp]\centering
\caption{Summary results}
\begin{tabular}{l*{6}{c}}
\hline\hline
            &     ageband&          \_D&          \_Y&       \_Rate&      \_Lower&      \_Upper\\
\hline
            &          40&           6&    .9070062&     6.61517&    2.971936&    14.72457\\
            &          50&          18&    2.107042&    8.542783&    5.382317&    13.55906\\
            &          60&          22&    1.493292&    14.73255&    9.700656&    22.37457\\
\hline\hline
\end{tabular}
\end{table}

注释:目录包含多个目录,例如/ date = YYYYMMDD /,我要返回到数组中的全部是YYYYMMDD,其中YYYYMMDD> =某个值。

我希望输出是一个数组:

origin="bucket/path/to/my/directory/" 
for path in $(aws s3 ls $origin --profile crossaccount --recursive | awk '{print $4}'); 
do echo "$path"; done 

实际结果是:

YYYYMMDD, YYYYMMDD, YYYYMMDD

https://docs.aws.amazon.com/cli/latest/reference/s3/ls.html

1 个答案:

答案 0 :(得分:0)

path="bucket/path/to/my/directory/date="
for i in $(aws s3 ls $path --profile crossaccount --recursive | awk -F'[=/]' '{if($6>20190000)print $6}');
do python3.6 my_python_program.py $i; done

我用awk了。括号中是列定界符= /,$ 6是目录全名定界后的第六列。它给了我输入python程序所需的日期。