從 s3 儲存桶複製特定文件

從 s3 儲存桶複製特定文件

我在 s3 存儲桶中有一些文件。

aws s3 ls s3://bucketname/

file-111-100x100.jpg
file-112-1400x1400.jpg
file-123-250x250.jpg
file-231-1400x1400.jpg
file-222-700x700.jpg
file-333-100x100.jpg
file-131-1400x1400.jpg
file-321-250x250.jpg
file-232-480x480.jpg
file-113-1400x1400.jpg
file-331-100x100.jpg

如何透過aws命令列僅複製具有1400*1400文本的文件,例如

file-112-1400x1400.jpg
file-231-1400x1400.jpg
file-131-1400x1400.jpg
file-113-1400x1400.jpg

幫我做這件事。

謝謝。

答案1

我不確定 awscli 是否有內建的方法來執行此操作,但我總是使用簡單的 bash 來執行此類操作。例如:

for i in $(aws s3 ls s3://bucketname/ | grep 1400x1400); do aws s3 cp s3://bucketname/$i; done

這不是最漂亮的方法,但它非常通用和靈活。

答案2

我相信最好的方法是使用 aws cli--include--exclude過濾器:

aws s3 cp s3://bucketname/ [dest] --exclude "*" --include "*1400x1400*"

您的目的地在哪裡[dest](即 s3 路徑或本地路徑)

兩點:

  • 如果您只想包含某些文件,則需要先--exclude "*"包含您指定的任何模式。此外,過濾器的順序也很重要。
  • 您也可以使用--recursive標誌遞歸地套用此篩選器

參考:https://docs.aws.amazon.com/cli/latest/reference/s3/index.html#use-of-exclude-and-include-filters 更多資訊aws s3 cphttps://docs.aws.amazon.com/cli/latest/reference/s3/cp.html

相關內容