files create cli aws linux amazon-web-services amazon-s3 ls aws-cli

linux - create - ¿Cómo mostrar solo los archivos del comando aws s3 ls?



aws s3 sync (5)

Estoy usando aws cli para enumerar los archivos en un cubo s3 usando el siguiente comando ( documentation ):

aws s3 ls s3://mybucket --recursive --human-readable --summarize

Este comando me da la siguiente salida:

2013-09-02 21:37:53 10 Bytes a.txt 2013-09-02 21:37:53 2.9 MiB foo.zip 2013-09-02 21:32:57 23 Bytes foo/bar/.baz/a 2013-09-02 21:32:58 41 Bytes foo/bar/.baz/b 2013-09-02 21:32:57 281 Bytes foo/bar/.baz/c 2013-09-02 21:32:57 73 Bytes foo/bar/.baz/d 2013-09-02 21:32:57 452 Bytes foo/bar/.baz/e 2013-09-02 21:32:57 896 Bytes foo/bar/.baz/hooks/bar 2013-09-02 21:32:57 189 Bytes foo/bar/.baz/hooks/foo 2013-09-02 21:32:57 398 Bytes z.txt Total Objects: 10 Total Size: 2.9 MiB

Sin embargo, esta es mi salida deseada:

a.txt foo.zip foo/bar/.baz/a foo/bar/.baz/b foo/bar/.baz/c foo/bar/.baz/d foo/bar/.baz/e foo/bar/.baz/hooks/bar foo/bar/.baz/hooks/foo z.txt

¿Cómo puedo omitir la fecha, la hora y el tamaño del archivo para mostrar solo la lista de archivos?


El comando simple sería

aws s3 ls s3://mybucket --recursive --human-readable --summarize |cut -d '' '' -f 8

Si necesita la marca de tiempo, simplemente actualice los valores del campo de comando.


No puede hacer esto solo con el comando aws , pero puede canalizarlo fácilmente a otro comando para eliminar la parte que no desea. También debe eliminar el --human-readable para obtener una salida más fácil de trabajar, y el --summarize para eliminar los datos de resumen al final.

Prueba esto:

aws s3 ls s3://mybucket --recursive | awk ''{print $4}''

Edición: para tener en cuenta los espacios en los nombres de archivo:

aws s3 ls s3://mybucket --recursive | awk ''{$1=$2=$3=""; print $0}'' | sed ''s/^[ /t]*//''


Solo para los nombres de archivo , encuentro lo más fácil de ser:

aws s3 ls s3://path/to/bucket/ | cut -d " " -f 4

Esto cortará la salida devuelta en los espacios ( cut -d " " ) y devolverá la cuarta columna ( -f 4 ), que es la lista de nombres de archivos.


Un filtro simple sería:

aws s3 ls s3://mybucket --recursive | perl -pe ''s/^(?:/S+/s+){3}//''

Esto eliminará la fecha, hora y tamaño. Dejó solo la ruta completa del archivo. También funciona sin el recursivo y también debe funcionar con el nombre de archivo que contiene espacios.


Manera simple

aws s3 ls s3://mybucket --recursive --human-readable --summarize|cut -c 29-