Te sugerimos que pruebes esta respuesta en un ambiente controlado antes de enviarlo a producción, saludos.
Solución:
Puede hacer esto proporcionando un --exclude
o --include
argumento varias veces. Pero tendrás que usar --recursive
para que esto funcione.
Cuando haya varios filtros, recuerde que el orden de los parámetros del filtro es importante. La regla es que los filtros que aparecen más adelante en el comando tienen prioridad sobre los filtros que aparecen antes en el comando.
aws s3 rm s3://x.y.z/ --recursive --exclude "*" --include "purple.gif" --include "worksheet.xlsx"
Aquí, todos los archivos serán excluidos del comando a excepción de morado.gif y hoja de trabajo.xlsx.
Si no está seguro, intente siempre una --dryrun
primero e inspeccione qué archivos se eliminarán.
Fuente: uso de filtros de exclusión e inclusión
s3 rm
no puede eliminar varios archivos, pero puede usar s3api delete-objects
para lograr lo que quieres aquí.
Ejemplo
aws s3api delete-objects --bucket x.y.z --delete '"Objects":["Key":"worksheet.xlsx","Key":"purple.gif"]'
Aparentemente, aws s3 rm solo funciona en archivos/objetos individuales.
A continuación se muestra un comando bash que construye comandos de eliminación individuales y luego elimina los objetos uno por uno. Funciona con cierto éxito (puede ser un poco lento, pero funciona):
aws s3 ls s3://bucketname/foldername/ |
awk 'print "aws s3 rm s3://bucketname/foldername/" $4' |
bash
Las primeras dos líneas están destinadas a construir los comandos “rm” y la tercera línea (bash) los ejecutará.
Tenga en cuenta que es posible que tenga problemas si los nombres de sus objetos tienen espacios o caracteres graciosos. Esto se debe a que el comando “aws s3 ls” no mostrará dichos objetos (a partir de este escrito)
Te mostramos las reseñas y valoraciones de los usuarios
Si aceptas, eres capaz de dejar una división acerca de qué te ha gustado de este escrito.