Windows服务器下AWS CLI递归列出含特定子串文件的问题
解决Windows下AWS CLI递归筛选含特定子串的文件问题
方法1:使用CMD命令行
直接结合aws s3 ls --recursive和FINDSTR实现过滤,注意Windows CMD中使用双引号或直接指定匹配串:
aws s3 ls s3://你的存储桶/目标路径/ --recursive | FINDSTR "_2021_"
如果需要更精确匹配文件名(而非路径中的目录名),可以调整FINDSTR的参数,比如用正则匹配文件名部分:
aws s3 ls s3://你的存储桶/目标路径/ --recursive | FINDSTR /R "_2021_.*\."
方法2:使用PowerShell
PowerShell的文本处理能力更强,适合复杂筛选:
- 基础筛选(保留完整输出行):
aws s3 ls s3://你的存储桶/目标路径/ --recursive | Select-String "_2021_"
- 仅提取文件名(去掉日期、大小列):
aws s3 ls s3://你的存储桶/目标路径/ --recursive | Select-String "_2021_" | ForEach-Object { $_.Line.Split()[-1] }
常见报错原因说明
你之前的命令报错大概率是以下问题:
- Windows CMD不识别单引号,若你用了
FINDSTR '_2021_'会触发语法错误,需改用双引号或直接写匹配串 - 未正确处理含空格的S3路径,若路径包含空格,需将路径用双引号包裹,比如
"s3://你的存储桶/带空格的路径/"
注:AWS CLI的s3 ls命令确实不支持--include/--exclude参数,这些参数仅适用于s3 cp、s3 sync等数据传输类命令,因此必须借助系统自带的文本过滤工具实现需求。
内容的提问来源于stack exchange,提问作者Jake Kibler
相关产品推荐
相关产品推荐

