![从 S3 存储桶复制特定文件](https://linux22.com/image/1558817/%E4%BB%8E%20S3%20%E5%AD%98%E5%82%A8%E6%A1%B6%E5%A4%8D%E5%88%B6%E7%89%B9%E5%AE%9A%E6%96%87%E4%BB%B6.png)
我在 s3 存储桶中有一些文件。
aws s3 ls s3://bucketname/
file-111-100x100.jpg
file-112-1400x1400.jpg
file-123-250x250.jpg
file-231-1400x1400.jpg
file-222-700x700.jpg
file-333-100x100.jpg
file-131-1400x1400.jpg
file-321-250x250.jpg
file-232-480x480.jpg
file-113-1400x1400.jpg
file-331-100x100.jpg
如何通过 aws 命令行仅复制具有 1400*1400 文本的文件,例如
file-112-1400x1400.jpg
file-231-1400x1400.jpg
file-131-1400x1400.jpg
file-113-1400x1400.jpg
帮我做这件事。
谢谢。
答案1
我不确定 awscli 是否有内置方法来执行此操作,但我一直只使用简单的 bash 来执行此类操作。例如:
for i in $(aws s3 ls s3://bucketname/ | grep 1400x1400); do aws s3 cp s3://bucketname/$i; done
这不是最漂亮的方法,但它非常通用且灵活。
答案2
我相信最好的方法是使用 aws cli--include
和--exclude
过滤器:
aws s3 cp s3://bucketname/ [dest] --exclude "*" --include "*1400x1400*"
你的目的地在哪里[dest]
(即 S3 路径或本地路径)
两点:
- 如果您只想包含某些文件,则需要先
--exclude "*"
包含指定的任何模式。此外,过滤器的顺序也很重要。 - 您还可以使用
--recursive
标志递归地应用此过滤器
参考:https://docs.aws.amazon.com/cli/latest/reference/s3/index.html#use-of-exclude-and-include-filters
更多信息aws s3 cp
:https://docs.aws.amazon.com/cli/latest/reference/s3/cp.html