Kopieren Sie bestimmte Dateien aus dem S3-Bucket

Kopieren Sie bestimmte Dateien aus dem S3-Bucket

Ich habe einige Dateien im S3-Bucket.

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

So kopieren Sie über die AWS-Befehlszeile nur Dateien mit einem Text der Größe 1400*1400 wie

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

Helfen Sie mir dabei.

Danke schön.

Antwort1

Ich bin nicht sicher, ob awscli eine integrierte Möglichkeit dafür bietet, aber ich habe für solche Dinge immer einfach Bash verwendet. Zum Beispiel:

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

Das ist zwar nicht die schönste Vorgehensweise, aber sie ist ziemlich allgemein und flexibel.

Antwort2

Ich glaube, der beste Weg wäre die Verwendung der AWS-Befehlszeilenschnittstelle --includeund --excludevon Filtern:

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

wo [dest]ist Ihr Ziel (also ein S3-Pfad oder ein lokaler Pfad)

Zwei Punkte:

  • Wenn Sie nur bestimmte Dateien einschließen möchten, müssen Sie dies zuerst tun, --exclude "*"bevor Sie das von Ihnen angegebene Muster einschließen. Auch die Reihenfolge der Filter ist wichtig.
  • Sie können diesen Filter auch rekursiv anwenden, indem Sie das --recursiveFlag

Referenz:https://docs.aws.amazon.com/cli/latest/reference/s3/index.html#use-of-exclude-and-include-filters Weitere Informationen aws s3 cp:https://docs.aws.amazon.com/cli/latest/reference/s3/cp.html

verwandte Informationen