
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 --include
und --exclude
von 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
--recursive
Flag
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