当前位置:  开发笔记 > 前端 > 正文

如何使用AWS CLI删除S3存储桶中的多个文件

如何解决《如何使用AWSCLI删除S3存储桶中的多个文件》经验,为你挑选了3个好方法。

假设我有一个名为的S3存储桶 x.y.z

在这个桶中,我有数百个文件.但我只想删除2个名为purple.gif和的文件worksheet.xlsx

我可以通过一次调用从AWS命令行工具执行此操作rm吗?

这不起作用:

$ aws s3 rm s3://x.y.z/worksheet.xlsx s3://x.y.z/purple.gif
Unknown options: s3://x.y.z/purple.gif

手册中,您似乎无法按名称明确删除文件列表.有谁知道这样做的方法?我不喜欢使用--recursive旗帜.



1> Khalid T...:

您可以通过多次提供--exclude--include参数来完成此操作.但是,你必须使用--recursive它来工作.

如果有多个过滤器,请记住过滤器参数的顺序很重要.规则是命令中稍后出现的过滤器优先于命令中较早出现的过滤器.

aws s3 rm s3://x.y.z/ --recursive --exclude "*" --include "purple.gif" --include "worksheet.xlsx"

在这里,除了purple.gifworksheet.xlsx之外,所有文件都将从命令中排除.

来源:使用排除和包含过滤器


请注意,这也将删除与--include模式匹配的子文件夹中的所有文件

2> spg..:

你不能使用s3 rm,但你可以使用s3api delete-objects:

aws s3api delete-objects --bucket x.y.z --delete '{"Objects":[{"Key":"worksheet.xlsx"},{"Key":"purple.gif"}]}'


这行得通,但是答案的“您不能使用`s3 rm`”部分是*不正确的*。

3> 小智..:

在AWS S3中使用UNIX WILDCARDS(AWS CLI)

当前,AWS CLI在命令的“ path”参数中不提供对UNIX通配符的支持。但是,使用几个aws s3命令上可用的--exclude和--include参数来复制此功能非常容易。

可用的通配符为:

“ *” –匹配所有内容

“?” –匹配任何单个字符

“ []” –匹配方括号之间的任何单个字符

“ [!]” –匹配括号之间的任何单个字符

关于在aws s3命令中使用--include--exclude的几点注意事项:

您可以使用任意数量的--include--exclude参数。

稍后传递的参数优先于先前传递的参数(在同一命令中)。

默认情况下,所有文件和对象都是“ 包括 ”的,因此,为了仅包括某些文件,您必须使用“排除”然后“包括”。--recursive必须与--include--exclude结合使用,否则命令将仅执行单个文件/对象操作。

示例: 将所有文件从工作目录复制到大基准存储桶:

aws s3 cp ./ s3://big-datums/ --recursive

从大基准存储桶中删除所有“ .java”文件:

aws s3 rm s3://big-datums/ --recursive --exclude "*" --include "*.java"

删除大基准段中所有扩展名为“ j”或“ c”(“。csv”,“。java,“。json”,。“ jpeg”等)的文件:

aws s3 rm s3://big-datums/ --recursive --exclude "*" --include "*.[jc]*"

将“ .txt”和“ .csv”文件从大基准S3存储桶复制到本地工作目录:

aws s3 cp s3://big-datums/ . --recursive --exclude "*" --include "*.txt" --include "*.csv"

#Copy all files from working directory to the big-datums bucket:
aws s3 cp ./ s3://big-datums/ --recursive

#Delete all ".java" files from the big-datums bucket:
aws s3 rm s3://big-datums/ --recursive --exclude "*" --include "*.java"

#Delete all files in the big-datums bucket with a file extension beginning with "j" or "c" (".csv", ".java, ".json", ."jpeg", etc.):
aws s3 rm s3://big-datums/ --recursive --exclude "*" --include "*.[jc]*"

#Copy ".txt" and ".csv" files from big-datums S3 bucket to local working directory:
aws s3 cp s3://big-datums/ . --recursive --exclude "*" --include "*.txt" --include "*.csv" ```

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有