目前有一些文件被上传到它们被破坏的地方。它们的文件大小为0字节。我可以问如何查询我的s3桶并按特定大小进行筛选,我试图询问什么时候字节是0?

目前我有两个问题。
首先,在存储桶中递归列出所有文件,但不进行排序。
aws s3 ls s3://testbucketname --recursive --summarize --human-readable第二种是排序,但只有在提供前缀时,在我的示例中,前缀是文件夹名。我当前的桶结构如下所示:{accountId}/{filename}
aws s3api list-objects-v2 --max-items 10 --bucket testbucketname --prefix "30265" --query "sort_by(Contents,&Size)"30265是帐户is /文件夹名。当没有提供前缀时,排序就无法正常工作。
任何帮助都将不胜感激。
此查询用于筛选名称,该名称是一个字符串。
s3api列表-对象-桶测试桶名称-查询“内容?包含(键,'.jpg')”
不幸的是,我不能用contains来表示大小,而且没有相等的值。
发布于 2022-05-09 16:02:48
您可以使用--query逻辑在本地将列表对象筛选为只有零字节大的对象:
aws s3api list-objects-v2 --bucket example-bucket --query 'Contents[?Size==`0`]'或者,如果您只想看到没有其他元数据的键列表,则可以进一步筛选列表:
aws s3api list-objects-v2 --bucket example-bucket --query 'Contents[?Size==`0`].Key'(对于这两种情况,在Windows上运行时,将外部'替换为"。)
此外,如果目标是删除这些对象,则可以使用jq和子subshell构造删除目标对象的查询:
aws s3api delete-objects --bucket example-bucket --delete \
"$(aws s3api list-objects-v2 --bucket example-bucket --query 'Contents[?Size==`0`].Key' |\
jq '{"Objects": map({"Key":.})}')"没有一种直接的方法可以用Windows的命令解释器来完成同样的构造。
https://stackoverflow.com/questions/72173481
复制相似问题