我正在尝试在特定日期范围内列出S3中虚拟文件夹中的文件。例如:2月份上传的所有文件。
我目前运行aws s3 ls
命令,但它提供了所有文件:
aws s3 ls s3://Bucket/VirtualFolder/VirtualFolder --recursive --human-readable --summarize > c:File.txt
如何让它仅列出给定日期范围内的文件?
答案 0 :(得分:4)
您可以使用awk:
等工具过滤结果aws s3 ls s3://Bucket/VirtualFolder/VirtualFolder --recursive --human-readable --summarize \
| awk -F'[-: ]' '$1 >= 2016 && $2 >= 3 { print }'
awk使用 - ,:和空格分隔符拆分每个记录,以便您可以将字段地址解析为:
答案 1 :(得分:2)
aws cli ls命令不支持过滤器,因此您必须恢复所有结果并在本地过滤。
答案 2 :(得分:0)
意识到这个问题被标记为command-line-interface
,我发现满足非平凡的aws-cli需求的最佳方法是编写Python脚本。
最有趣的例子:
$ python3 -c "import boto3; print(boto3.client('s3').list_buckets()['Buckets'][0])"
返回:(对我来说)
{'Name': 'aws-glue-scripts-282302944235-us-west-1', 'CreationDate': datetime.datetime(2019, 8, 22, 0, 40, 5, tzinfo=tzutc())}
单线不是一个深刻的脚本,但可以将其解释为一个脚本。 (可能比花一个bash
脚本花费更少的精力,就像我爱bash
一样。)在查找了几个boto3
调用之后,您可以从等效的cli命令中推断出其余的内容。>