如何用aws s3 ls列出S3桶中含指定模式的.tsv文件?
直接列出S3中符合模式的.tsv文件的方法
方法1:结合aws s3 ls与文本过滤工具
aws s3 ls本身不支持--exclude/--include参数,但可以用grep和awk配合实现需求:
aws s3 ls s3://<my bucket> --recursive | grep "report_filtered_count10\.tsv$" | awk '{print "s3://<my bucket>/" $4}'
aws s3 ls --recursive:递归列出桶内所有对象的详细信息grep "report_filtered_count10\.tsv$":筛选出文件名以report_filtered_count10.tsv结尾的条目(注意转义.避免匹配任意字符)awk '{print "s3://<my bucket>/" $4}':提取输出中的文件路径部分,拼接成完整的S3对象URL
方法2:用aws s3api list-objects-v2直接筛选(更高效)
使用S3 API命令配合--query参数,直接在服务端过滤结果,避免本地处理大量数据:
aws s3api list-objects-v2 --bucket <my bucket> --query "Contents[?contains(Key, 'report_filtered_count10.tsv')].{Path: 's3://<my bucket>/' + Key}" --output text
--query:用JMESPath语法筛选包含指定字符串的对象Key,拼接成完整S3路径--output text:以纯文本格式输出结果,符合你期望的格式
为什么之前的尝试失败?
--exclude和--include参数仅适用于s3 sync、s3 cp等涉及对象传输的命令,aws s3 ls并不支持这些参数,因此会报错。
内容的提问来源于stack exchange,提问作者DaniCee
相关产品推荐
相关产品推荐

