Question Comment afficher uniquement les fichiers de la commande aws s3 ls?


J'utilise le aws cli pour lister les fichiers dans un compartiment s3 en utilisant la commande suivante (Documentation):

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

Cette commande me donne la sortie suivante:

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

Cependant, ceci est mon résultat désiré:

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

Comment puis-je omettre la date, l'heure et la taille du fichier afin d'afficher uniquement la liste de fichiers?


19
2018-04-23 16:23


origine


Réponses:


Vous ne pouvez pas faire cela avec juste le aws commande, mais vous pouvez facilement le diriger vers une autre commande pour supprimer la partie que vous ne voulez pas. Vous devez également supprimer le --human-readable drapeau pour obtenir des résultats plus faciles à travailler, et le --summarize flag pour supprimer les données récapitulatives à la fin.

Essaye ça:

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

Edit: pour prendre en compte les espaces dans les noms de fichiers:

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

29
2018-04-23 17:22



Un simple filtre serait:

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

Cela supprimera la date, l'heure et la taille. Ne laisse que le chemin complet du fichier. Il fonctionne également sans le récursif et devrait également fonctionner avec des espaces contenant des noms de fichiers.


6
2018-01-11 13:10



Manière simple

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

1
2017-08-10 21:07



Pour seulement le fichier les noms, je trouve le plus facile d'être:

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

Cela réduira la sortie renvoyée dans les espaces (cut -d " ") et retourne la quatrième colonne (-f 4), qui est la liste des noms de fichiers.


1
2018-06-11 18:34



Commande simple serait

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

Si vous avez besoin de l'horodatage, mettez simplement à jour les valeurs du champ de commande.


0
2017-09-01 05:29