AWS S3 cp命令如何使用含下划线的include模式匹配复制文件
AWS CLI s3 cp 命令include模式中下划线精准匹配方法
问题核心原因
匹配失效和下划线本身的转义无关,核心是踩了AWS CLI S3筛选的两个默认逻辑坑:
- 默认规则为全量包含所有文件,仅添加
--include参数不会排除不符合匹配规则的文件,只会在全量包含的基础上额外追加匹配范围 --exclude、--include参数按书写顺序从左到右依次生效,顺序错误会直接导致匹配失效
正确配置命令
下划线_在AWS CLI的通配匹配规则中属于普通字符,不需要任何转义,只需要先添加全量排除规则,再追加目标匹配规则即可:
aws s3 cp s3://BUCKET/ LocalFolder --recursive --exclude "*" --include "20220630_0840*"
之前方案失效的具体原因
- 方案1:
--include "20220630_0840*"未添加前置全量排除规则,所有20220630开头的文件本来就在默认全量包含范围内,规则没有起到过滤作用 - 方案2:
--include "[20220630_0840]*"方括号在通配规则中代表字符集匹配,逻辑为匹配括号内任意单个字符开头的文件,匹配规则本身写法错误 - 方案3:
--include "20220630\_0840*"反斜杠转义下划线属于多余操作,下划线不是特殊元字符不需要转义,同时因为缺少全量排除规则,依然无法过滤非目标文件
匹配效果验证方法
正式执行复制操作前,可以把cp替换为ls命令先查看匹配结果,不会产生实际文件传输:
aws s3 ls s3://BUCKET/ --recursive --exclude "*" --include "20220630_0840*"
返回的文件列表和预期一致时,再替换为cp命令执行即可。
内容的提问来源于stack exchange,提问作者fingerprints
相关产品推荐
相关产品推荐

