copie arquivos específicos do bucket s3

copie arquivos específicos do bucket s3

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 --includee --excludeos 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 --recursivesinalizador

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

informação relacionada