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

1400*1400のテキストを含むファイルのみをawsコマンドラインでコピーする方法

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 パスまたはローカル パス)

2つのポイント:

  • 特定のファイルのみを含める場合は、--exclude "*"指定したパターンを含める前に、まず を行う必要があります。また、フィルターの順序も重要です。
  • このフィルタは--recursiveフラグを使って再帰的に適用することもできます

参照:https://docs.aws.amazon.com/cli/latest/reference/s3/index.html#use-of-exclude-and-include-filters 詳細情報aws s3 cp:s3 のドキュメント

関連情報