我在AWS CLI中使用*从某个桶中选择文件的子集时遇到了麻烦。
*
像这样将*添加到路径中似乎不起作用
aws s3 cp s3://data/2016-08* .
recursive
exclude
include
示例命令:
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
参数的顺序很重要
排除和包括应该按照特定的顺序使用,我们必须先排除,然后再包括。反之则不会成功。
aws s3 cp s3://data/ . --recursive --include "2016-08*" --exclude "*"
这将失败,因为在这种情况下参数的顺序很重要。include被*排除
aws s3 cp s3://data/ . --recursive --exclude "*" --include "2016-08*"`
这个可以工作,因为我们排除了所有内容,但后来我们包含了特定的目录。
好吧,我不得不说这个例子是错误的,应该纠正如下:
aws s3 cp . s3://data/ --recursive --exclude "*" --include "2006-08*" --exclude "*/*"
.必须紧跟在cp之后。最后的--exclude是为了确保没有从--recursive拾取的任何子目录中拾取任何东西(错误地学习了一个…)
.
cp
--exclude
--recursive
这将适用于任何在这里挣扎的人。
如果在使用‘ * ’时出现错误,您还可以使用递归,包括和排除标记,如
‘ * ’
aws s3 cp s3://myfiles/ . --recursive --exclude "*" --include "file*"