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-