[英]How to modify the batch file to get two last modified files from S3?
我目前有一个 bat 文件,它将最后修改的文件从 AWS S3 存储桶复制到本地文件夹。
for /f "delims=" %%i in ('aws s3api list-objects-v2 --bucket example.sftp --prefix data/ --query "sort_by(Contents, &LastModified)[-1].Key" --output text') do set object=%%i
aws s3 cp s3://example.sftp/%object% E:\DATA_S3
我想修改它以在按上次修改而不是一个排序时获得两个文件。 将[-1]
更改为[-2]
无效。
JMESPath 使用 Python 语法来引用列表,所以使用:
--query "sort_by(Contents, &LastModified)[-2:].Key"
这意味着“从倒数第二个元素到列表末尾”。
我强烈推荐JMESPath 教程,其中包括命令的交互式测试。 我使用那个页面测试了这个概念。
您可以使用 JMESPath 查询通过[-2:]
获取最近的两个项目,然后依次对每个项目进行操作。 请注意,在路径中,不要使用.Key
,而是使用.[Key]
,这会导致 AWS CLI 的文本 output 以换行符而不是制表符分隔,从而允许批处理文件的for
运算符轻松解析:
for /f "delims=" %%i in ('aws s3api list-objects-v2 --bucket example-bucket --prefix target/prefix/ --query "sort_by(Contents, &LastModified)[-2:].[Key]" --output text') do (
aws s3 cp s3://example-bucket/%%i folder\to\copy\to
)
问题未解决?试试以下方法:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.