
Eu tenho alguns arquivos no bucket 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
Como copiar apenas arquivos através da linha de comando do AWS que possuem texto 1400*1400 como
file-112-1400x1400.jpg
file-231-1400x1400.jpg
file-131-1400x1400.jpg
file-113-1400x1400.jpg
Ajude-me a fazer isso.
Obrigado.
Responder1
Não tenho certeza se o awscli tem uma maneira integrada de fazer isso, mas sempre usei o bash simples para fazer coisas assim. Por exemplo:
for i in $(aws s3 ls s3://bucketname/ | grep 1400x1400); do aws s3 cp s3://bucketname/$i; done
Não é a maneira mais bonita de fazer isso, mas é bastante geral e flexível.
Responder2
Acredito que a melhor maneira seria usar o aws cli --include
e --exclude
os filtros:
aws s3 cp s3://bucketname/ [dest] --exclude "*" --include "*1400x1400*"
onde [dest]
está o seu destino (ou seja, um caminho s3 ou caminho local)
Dois pontos:
- Se você deseja incluir apenas determinados arquivos, você precisa primeiro
--exclude "*"
incluir qualquer padrão especificado. Além disso, a ordem dos filtros é importante. - Você também pode aplicar este filtro recursivamente usando o
--recursive
sinalizador
Referência:https://docs.aws.amazon.com/cli/latest/reference/s3/index.html#use-of-exclude-and-include-filters
Mais informações em aws s3 cp
:https://docs.aws.amazon.com/cli/latest/reference/s3/cp.html