【问题标题】:AWS CLI search a file in s3 bucket and copy to different folderAWS CLI 在 s3 存储桶中搜索文件并复制到不同的文件夹
【发布时间】:2020-08-21 19:02:10
【问题描述】:

我正在尝试仅将文件从 AWS S3 Folder_Test1 文件夹复制到同一存储桶中的 Folder_Test2 文件夹。

Folder_Test1:

T1_abc_june21.csv
T1_abc_june25.csv
T2_abc_june29.csv
T1_abc_def_june21.csv
T2_abc_def_june25.csv
T3_abc_def_june29.csv
T3_xyz_june29.csv

我必须过滤只有abc 的文件名并排除文件abc_def

我试过了:

aws s3 cp  s3://$bucket/Folder_Test1/ s3://$bucket/Folder_Test2/ --exclude "*abc_def*" --include "*abc*"

但它不起作用。

【问题讨论】:

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


    【解决方案1】:

    来自s3 — AWS CLI 1.18.123 Command Reference

    可以将任意数量的这些参数传递给命令。您可以通过多次提供 --exclude 或 --include 参数来做到这一点,例如--include ".txt" --include ".png"。当有多个过滤器时,规则是命令后面出现的过滤器优先于命令前面出现的过滤器。

    因此,问题在于您的命令是排除 *abc_def*,然后是包括 *abc*,这又添加了*abc_def* 文件。

    您应该可以通过交换订单来解决它:

    aws s3 cp  s3://$bucket/Folder_Test1/ s3://$bucket/Folder_Test2/ --include "*abc*" --exclude "*abc_def*"
    

    如果它正在复制您不想要的其他文件(例如xyz),则添加exclude

    aws s3 cp  s3://$bucket/Folder_Test1/ s3://$bucket/Folder_Test2/ --exclude "*" --include "*abc*" --exclude "*abc_def*"
    

    这将按顺序应用这些规则

    • 排除所有内容
    • 添加*abc*
    • 排除*abc_def*

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-07
      • 1970-01-01
      相关资源
      最近更新 更多