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

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

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

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

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

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

File list
trans_120215.csv
trans_130215.csv
sum_trans_120215.csv
sum_trans_130215.csv

如果我使用正则表达式,我可以使其更具体,例如 "^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"
    )

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

我已经考虑过如下所示的其他替代方案,但希望有一种方法可以调整复制命令以避免走以下任一路线:

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

最佳答案

您列出的替代方案是最佳选择,因为 S3 CLI 不支持正则表达式

Use of Exclude and Include Filters :

Currently, there is no support for the use of UNIX style wildcards in a command's path arguments. However, most commands have --exclude "" and --include "" parameters that can achieve the desired result. These parameters perform pattern matching to either exclude or include a particular file or object. The following pattern symbols are supported.

*: Matches everything
?: Matches any single character
[sequence]: Matches any character in sequence
[!sequence]: Matches any character not in sequence

关于r - 如何使用 AWS CLI 仅复制 S3 存储桶中与给定字符串模式匹配的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36215713/

相关文章:

apache-spark - Spark 写入 S3 SaveMode.Append

r - 如何处理在 dplyr 管道中进一步产生空数据的管道

html - 使用 R 从包含超链接的网页中提取多个表

amazon-web-services - aws cdk Fn.import_value 返回 token 忽略bucketname 的cloudformation 输出并显示 token

amazon-web-services - AWS 中暂存和生产环境的最佳策略

amazon-web-services - 安装在 EC2 服务器中时适用的 Amazon S3 Bucket 数据传输费用?

ios - 使用 IOS 6 分段上传到 Amazon S3

r - 如何包装 gridExtra::tableGrob() 中特定列的每一行

r - 在 Rstudio 中使用 rvest 抓取时,我得到了与网络上不同的 html 文本

amazon-web-services - 通过 ALB 和 Lambda 集成提供二进制响应