копировать определенные файлы из корзины 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 cp:https://docs.aws.amazon.com/cli/latest/reference/s3/cp.html

Связанный контент