如何使用通配符通过AWS CLI`cp`一组文件


109

*在AWS CLI中使用时无法从特定存储桶中选择文件的子集。

*像这样添加到路径似乎不起作用

aws s3 cp s3://data/2016-08* .

Answers:


181

为了从AWS桶下载多个文件到当前目录,你可以使用recursiveexcludeinclude标志是这样的:

aws s3 cp s3://data/ . --recursive --exclude "*" --include "2016-08*"

有关如何使用这些过滤器的更多信息,请访问:http : //docs.aws.amazon.com/cli/latest/reference/s3/#use-of-exclude-and-include-filters


24
我想指出的--exclude "*"不是错字。如果您不添加它,则包含将匹配任何内容。根据文档:请注意,默认情况下,所有文件都包括在内。这意味着仅提供--include过滤器将不会更改要传输的文件。--include将仅重新包括从--exclude过滤器中排除的文件。如果只想上传具有特定扩展名的文件,则需要首先排除所有文件,然后重新包含具有特定扩展名的文件。
pyb

7
注意排除和包括的顺序。
凯基

3
您也可以使用sync类似的效果,默认情况下它是递归的:aws s3 sync s3://data/ . --exclude "*" --include "2016-08*"
谐和

55

参数的顺序

排除和包含应按特定顺序使用,我们必须首先排除然后包含。反之亦然。

aws s3 cp s3://data/ . --recursive  --include "2016-08*" --exclude "*" 

这将失败,因为在这种情况下参数顺序很重要。包含项被*排除

aws s3 cp s3://data/ . --recursive --exclude "*" --include "2016-08*"`

之所以可以使用该目录,是因为我们排除了所有内容,但后来我们包含了特定目录。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.