在S3中打印符合某些特定模式的文件

问题描述 投票:0回答:1

我有一个S3存储桶,在存储桶中我有一个文件夹,在文件夹中我有许多子文件夹,如下所述。

桶路径:s3:// path1 / path2

里面的path2文件夹会像

D1D04021200040609001
D1D04021200040612001
D3D04020000040603001
D3D04020000040606001
D6D05091200051512001
D6D05091200051518001
G1S05101200051217001
G1S05101200051218001
G4S05091200051012001
G4S05091200051013001

我有很多这样的文件夹。我只想检查特定文件是否存在或不使用模式。我如何在Linux中执行此操作

aws s3api list-objects --bucket path1/path2 --query "Contents[?contains(Key, `D1D0`)]"

出现类似...的错误。无效的存储桶名称存储桶名称应在正则表达式中

请帮助!

linux bash amazon-web-services shell amazon-s3
1个回答
0
投票

看来您的要求是计算包含给定字符串的所有对象的总大小。

这可以通过:

 aws s3api list-objects --bucket my-bucket --query "sum(Contents[?contains(Key, 'E4Y0')].Size)"

相反,如果要查找以给定字符串开头的所有对象的总大小,请使用:

 aws s3api list-objects --bucket my-bucket --prefix E4Y0 --query "sum(Contents[].Size)"

[请注意,Prefix查看的是完整路径,因此它可能包含子目录。因此,首先用--query Contents[].Key打印名称以确保您包含正确的对象。

© www.soinside.com 2019 - 2024. All rights reserved.