![](/img/trans.png)
[英]How to make AWS S3 Glacier files available for retrieval recursively with AWS CLI
[英]How to Recursively Delete S3 Objects of Size 0 using the AWS CLI
是否有使用 AWS CLI 删除前缀下所有大小为 0 的对象的简单方法?
例如,如果我们的 s3 前缀如下所示:
$ aws s3 ls --recursive s3://bucket/prefix
2022-04-20 10:39:51 0 empty_file
2022-04-20 10:39:52 21 top_level_file
2022-04-14 15:01:34 0 folder_a/nested_empty_file
2022-04-23 03:35:02 42 folder_a/dont_delete_me
我想要一个 aws cli 命令行调用来删除empty_file
和folder_a/nested_empty_file
。
我知道这可以通过boto
或任何其他数量的 s3 api 实现来完成,但感觉我应该能够从命令行在一行中完成它,因为它很简单。
使用aws s3api
子命令和jq
进行 json 争论,我们可以执行以下操作:
aws s3api delete-objects --bucket bucket --delete "$(aws s3api list-objects-v2 --bucket bucket --prefix prefix --query 'Contents[?Size==`0`]' | jq -c -r '{ "Objects": [.[] | {"Key": .Key}] }')"
aws s3api
尚不支持从 stdin 读取(参见此处的 GH PR: https://github.com/aws/aws-cli/pull/3209 )因此我们需要通过子 shell 扩展传递对象列表,即不幸的是有点尴尬,但仍然符合我作为单行者的要求。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.