我在AWS CLI中使用*从某个桶中选择文件的子集时遇到了麻烦。
像这样向路径添加*似乎不起作用
Aws s3 cp s3://data/2016-08* .使用实例
我在AWS CLI中使用*从某个桶中选择文件的子集时遇到了麻烦。
像这样向路径添加*似乎不起作用
Aws s3 cp s3://data/2016-08* .使用实例
当前回答
参数的顺序很重要
排除和包括应该按照特定的顺序使用,我们必须先排除,然后再包括。反之则不会成功。
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是为了确保从——递归拾取的任何子目录中都没有拾取任何东西(错误地学习了一个…)
这将适用于任何在这里挣扎的人。
参数的顺序很重要
排除和包括应该按照特定的顺序使用,我们必须先排除,然后再包括。反之则不会成功。
aws s3 cp s3://data/ . --recursive --include "2016-08*" --exclude "*"
这将失败,因为在这种情况下参数的顺序很重要。include被*排除
aws s3 cp s3://data/ . --recursive --exclude "*" --include "2016-08*"`
这个可以工作,因为我们排除了所有内容,但后来我们包含了特定的目录。
要将多个文件从aws桶下载到当前目录,可以使用递归、排除和包含标志。 参数的顺序很重要。
示例命令:
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
正如其他人所指出的那样,您可以对——include和——exclude标志做任何您想做的事情。你不能简单使用的原因
aws s3 cp s3://data/2016-08* .
S3 uri不是POSIX路径,不像BASH或其他shell那样解析POSIX glob字符。实际上,*字符和许多其他glob字符是S3对象URI中的有效字符,因此您的命令要求复制一个文本名为S3://data/2016-08*的文件。如果没有该名称的对象,则S3将响应该对象不存在。
如果在使用' * '时出现错误,您还可以使用递归,包括和排除标志,如
Aws s3 cp s3://myfiles/。——递归——排除“*”——包括“file*”