Скопировать определенные файлы из корзины 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
Это не самый красивый способ сделать это, но он довольно общий и гибкий.
Я считаю, что лучшим способом было бы использовать 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 Подробнее о aws s3 cp
: https://docs.aws.amazon.com/cli/latest/reference/s3/cp.html