根据文件名过滤 s3 存储桶上的文件

根据文件名过滤 s3 存储桶上的文件

我有一个 s3 存储桶,其中包含这样命名的文件:

example_test_20200612010000   
example_test_20200612020000
example_test_20200612020000
example_control_20200612010000
example_control_20200612020000
example_control_20200612020000

这样的文件每隔几分钟就会进入此 s3 存储桶 - 我需要确定哪些测试文件是新的(我尚未处理)。我的逻辑是做这样的事情:

aws s3 ls [s3 bucket name] --profile [profile name] | grep "test" | awk '$4 > 'example_test_20200612010000'

文件命名始终一致,因此只需检查此存储桶中的所有测试文件,其中文件名按字典顺序大于我处理的最新文件(从而比较最后的时间戳部分)。

答案1

尝试

| awk -v ref=example_test_20200612010000 '/test/ && $4 > ref { print $4}'

请注意,您可以按日期列出对象(全部在一行中)

aws s3api list-object --bucket ... 
   --query 'Contents[?LastModified>`2020-05-01`].{Key: Key,Size: Size}' 

2020-05-01当然,替换 LastModified> 。

处理 JSON 结果使用

| jq -r '.[].Key'

相关内容