Gunakan s3api dengan jq (objek daftar AWS docu aws s3api):
Mode ini selalu rekursif.
$ aws s3api list-objects --bucket "bucket" | jq -r '.Contents[].Key'
a.txt
foo.zip
foo/bar/.baz/a
[...]
Anda dapat memfilter sub direktori dengan menambahkan awalan (di sini foo
direktori). Awalan tidak boleh dimulai dengan /
.
$ aws s3api list-objects --bucket "bucket" --prefix "foo/" | jq -r '.Contents[].Key'
foo/bar/.baz/a
foo/bar/.baz/b
foo/bar/.baz/c
[...]
Opsi jq:
-r
=Mode Mentah, tidak ada tanda kutip di keluaran.Contents[]
=DapatkanContents
Konten Larik Objek.Key
=Dapatkan setiap Bidang Kunci (tidak menghasilkan Array JSON yang valid, tetapi kami dalam mode mentah, jadi kami tidak peduli)
Tambahan :
Anda dapat menggunakan AWS CLI murni, tetapi nilainya akan dipisahkan oleh \x09
=Tab Horizontal (AWS:Mengontrol Keluaran Perintah dari AWS CLI - Format Keluaran Teks)
$ 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 [...]
Opsi AWS CLI:
--query "Contents[].Key"
=Query Contents Object Array dan dapatkan setiap Kunci di dalam--output text
=Keluaran sebagai Teks yang dibatasi Tab dengan Kutipan sekarang
Tambahan berdasarkan Komentar Guangyang Li :
CLI AWS Murni dengan Jalur Baru:
$ 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
[...]
Anda tidak dapat melakukan ini hanya dengan aws
perintah, tetapi Anda dapat dengan mudah menyalurkannya ke perintah lain untuk menghapus bagian yang tidak Anda inginkan. Anda juga perlu menghapus --human-readable
flag untuk mendapatkan output lebih mudah untuk dikerjakan, dan --summarize
tandai untuk menghapus data ringkasan di bagian akhir.
Coba ini:
aws s3 ls s3://mybucket --recursive | awk '{print $4}'
Sunting:untuk mempertimbangkan spasi dalam nama file:
aws s3 ls s3://mybucket --recursive | awk '{$1=$2=$3=""; print $0}' | sed 's/^[ \t]*//'
Cara Sederhana
aws s3 ls s3://mybucket --recursive --human-readable --summarize|cut -c 29-
Filter sederhana adalah:
aws s3 ls s3://mybucket --recursive | perl -pe 's/^(?:\S+\s+){3}//'
Ini akan menghapus tanggal, waktu dan ukuran. Hanya tersisa path lengkap dari file tersebut. Ini juga berfungsi tanpa rekursif dan juga harus bekerja dengan nama file yang berisi spasi.