Použijte s3api s jq (AWS docu aws s3api seznam-objektů):
Tento režim je vždy rekurzivní.
$ aws s3api list-objects --bucket "bucket" | jq -r '.Contents[].Key'
a.txt
foo.zip
foo/bar/.baz/a
[...]
Podadresáře můžete filtrovat přidáním předpony (zde foo
adresář). Předpona nesmí začínat /
.
$ aws s3api list-objects --bucket "bucket" --prefix "foo/" | jq -r '.Contents[].Key'
foo/bar/.baz/a
foo/bar/.baz/b
foo/bar/.baz/c
[...]
Možnosti jq:
-r
=Raw Mode, bez uvozovek na výstupu.Contents[]
=ZískejteContents
Obsah pole objektů.Key
=Získejte každé klíčové pole (neprodukuje platné pole JSON, ale jsme v nezpracovaném režimu, takže nás to nezajímá)
Dodatek :
Můžete použít čistě AWS CLI, ale hodnoty budou odděleny \x09
=Horizontální karta (AWS:Řízení výstupu příkazů z AWS CLI – Textový výstupní formát)
$ aws s3api list-objects --bucket "bucket" --prefix "foo/" --query "Contents[].Key" --output text
foo/bar/.baz/a foo/bar/.baz/b foo/bar/.baz/c [...]
Možnosti AWS CLI:
--query "Contents[].Key"
=Dotaz na obsah pole objektů a získejte každý klíč dovnitř--output text
=Výstup jako text oddělený tabulátory s nyní uvozovkami
Dodatek na základě komentáře Guangyang Li :
Čistý AWS CLI s novou řadou:
$ aws s3api list-objects --bucket "bucket" --prefix "foo/" --query "Contents[].{Key: Key}" --output text
foo/bar/.baz/a
foo/bar/.baz/b
foo/bar/.baz/c
[...]
Nemůžete to udělat pouze s aws
příkaz, ale můžete jej snadno převést na jiný příkaz a odstranit část, kterou nechcete. Musíte také odstranit --human-readable
příznak pro snazší práci s výstupem a --summarize
příznak k odstranění souhrnných dat na konci.
Zkuste toto:
aws s3 ls s3://mybucket --recursive | awk '{print $4}'
Edit:pro zohlednění mezer v názvech souborů:
aws s3 ls s3://mybucket --recursive | awk '{$1=$2=$3=""; print $0}' | sed 's/^[ \t]*//'
Jednoduchý způsob
aws s3 ls s3://mybucket --recursive --human-readable --summarize|cut -c 29-
Jednoduchý filtr by byl:
aws s3 ls s3://mybucket --recursive | perl -pe 's/^(?:\S+\s+){3}//'
Tím se odstraní datum, čas a velikost. Ponechejte pouze úplnou cestu k souboru. Funguje také bez rekurzivního a mělo by fungovat i se souborem obsahujícím mezery.