AWS CLI“s3 ls”命令用于列出虚拟文件夹中文件的日期范围

时间:2016-03-30 18:01:12

标签: amazon-web-services amazon-s3 command-line-interface

我正在尝试在特定日期范围内列出S3中虚拟文件夹中的文件。例如:2月份上传的所有文件。

我目前运行aws s3 ls命令,但它提供了所有文件:

aws s3 ls s3://Bucket/VirtualFolder/VirtualFolder --recursive --human-readable --summarize > c:File.txt

如何让它仅列出给定日期范围内的文件?

3 个答案:

答案 0 :(得分:4)

您可以使用awk:

等工具过滤结果
aws s3 ls s3://Bucket/VirtualFolder/VirtualFolder --recursive --human-readable --summarize \
| awk -F'[-: ]' '$1 >= 2016 && $2 >= 3 { print }'

awk使用 - ,:和空格分隔符拆分每个记录,以便您可以将字段地址解析为:

  • $ 1 - 年
  • $ 2 - 月
  • $ 3 - 天
  • $ 4 - 小时
  • $ 5分钟
  • $ 6 - 秒

答案 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命令中推断出其余的内容。