
Tengo algunos archivos en el depósito 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
Cómo copiar solo archivos a través de la línea de comando de AWS que tienen texto de 1400*1400 como
file-112-1400x1400.jpg
file-231-1400x1400.jpg
file-131-1400x1400.jpg
file-113-1400x1400.jpg
Ayúdame a hacer esto.
Gracias.
Respuesta1
No estoy seguro de si awscli tiene una forma integrada de hacer esto, pero siempre he usado bash simple para hacer cosas como esta. Por ejemplo:
for i in $(aws s3 ls s3://bucketname/ | grep 1400x1400); do aws s3 cp s3://bucketname/$i; done
No es la forma más bonita de hacerlo, pero es bastante general y flexible.
Respuesta2
Creo que la mejor manera sería usar AWS CLI --include
y --exclude
los filtros:
aws s3 cp s3://bucketname/ [dest] --exclude "*" --include "*1400x1400*"
¿Dónde [dest]
está su destino (es decir, una ruta s3 o una ruta local)?
Dos puntos:
- Si solo desea incluir ciertos archivos, primero debe hacerlo
--exclude "*"
antes de incluir cualquier patrón que especifique. Además, el orden de los filtros es importante. - También puedes aplicar este filtro de forma recursiva usando la
--recursive
bandera
Referencia:https://docs.aws.amazon.com/cli/latest/reference/s3/index.html#use-of-exclude-and-include-filters
Más información sobre aws s3 cp
:https://docs.aws.amazon.com/cli/latest/reference/s3/cp.html