相关疑难解决方法(0)

如何使用AWS CLI仅复制S3存储桶中与给定字符串模式匹配的文件

我正在使用AWS CLI使用如下命令将文件从S3存储桶复制到我的R计算机:

  system(
    "aws s3 cp s3://my_bucket_location/ ~/my_r_location/ --recursive --exclude '*' --include '*trans*' --region us-east-1"
    )
Run Code Online (Sandbox Code Playgroud)

这按预期工作,即它复制my_bucket_location中该位置文件名中包含"trans"的所有文件.

我面临的问题是我有其他文件具有类似的命名约定,我不想在此步骤中导入.作为一个例子,在下面的列表中我只想复制前两个文件,而不是最后两个:

File list
trans_120215.csv
trans_130215.csv
sum_trans_120215.csv
sum_trans_130215.csv
Run Code Online (Sandbox Code Playgroud)

如果我正在使用正则表达式,我可以使它更具体"^trans_\\d+",只需要引入前两个文件,但使用AWS CLI似乎不可能.所以我的问题是如何使用AWS CLI进行更复杂的模式匹配,如下所示?

  system(
    "aws s3 cp s3://my_bucket_location/ ~/my_r_location/ --recursive --exclude '*' --include '^trans_\\d+' --region us-east-1"
    )
Run Code Online (Sandbox Code Playgroud)

请注意,我只能使用有关文件的信息,即我想导入带有模式的文件"^trans_\\d+",我不能使用其他不需要的文件在开头包含sum_的事实,因为这只是一个例子可能是其他类似名称的文件,如"check_trans_120215.csv".

我已经考虑了下面的其他替代方案,但希望有一种方法可以调整复制命令以避免沿着这两条路线走下去:

  • 列出存储桶中的所有项目>使用R中的regex指定我想要的文件>仅导入这些文件
  • 保持复制命令的原样>复制后删除R机器上的不需要的文件

r amazon-s3 amazon-web-services aws-cli

10
推荐指数
2
解决办法
2万
查看次数

标签 统计

amazon-s3 ×1

amazon-web-services ×1

aws-cli ×1

r ×1