Bor*_*lis 42 linux ls amazon-s3 amazon-web-services aws-cli
我使用aws cli使用以下命令(文档)列出s3存储桶中的文件:
aws s3 ls s3://mybucket --recursive --human-readable --summarize
Run Code Online (Sandbox Code Playgroud)
这个命令给我以下输出:
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
Run Code Online (Sandbox Code Playgroud)
但是,这是我想要的输出:
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
Run Code Online (Sandbox Code Playgroud)
如何省略日期,时间和文件大小以仅显示文件列表?
Mar*_*k B 61
您不能仅使用该aws
命令执行此操作,但您可以轻松地将其传递给另一个命令以去除您不想要的部分.您还需要删除--human-readable
标志以使输出更容易使用,并--summarize
在最后删除标记以删除摘要数据.
试试这个:
aws s3 ls s3://mybucket --recursive | awk '{print $4}'
Run Code Online (Sandbox Code Playgroud)
编辑:将文件名中的空格考虑在内:
aws s3 ls s3://mybucket --recursive | awk '{$1=$2=$3=""; print $0}' | sed 's/^[ \t]*//'
Run Code Online (Sandbox Code Playgroud)
小智 7
一个简单的过滤器将是:
aws s3 ls s3://mybucket --recursive | perl -pe 's/^(?:\S+\s+){3}//'
Run Code Online (Sandbox Code Playgroud)
这将删除日期,时间和大小.只留下文件的完整路径.它也可以在没有递归的情况下工作,它也应该与包含空格的文件名一起使用.
将s3api与jq一起使用(AWS docu aws s3api list-objects):
此模式始终是递归的。
$ aws s3api list-objects --bucket "bucket" | jq -r '.Contents[].Key'
a.txt
foo.zip
foo/bar/.baz/a
[...]
Run Code Online (Sandbox Code Playgroud)
您可以通过添加前缀(此处为foo
目录)来过滤子目录。前缀不能以开头/
。
$ aws s3api list-objects --bucket "bucket" --prefix "foo/" | jq -r '.Contents[].Key'
foo/bar/.baz/a
foo/bar/.baz/b
foo/bar/.baz/c
[...]
Run Code Online (Sandbox Code Playgroud)
jq选项:
-r
=原始模式,输出中无引号.Contents[]
=获取Contents
对象数组内容.Key
=获取每个键字段(不会产生有效的JSON数组,但是我们处于原始模式,因此我们不在乎)附录:
您可以使用纯AWS CLI,但值将由\x09
= Horizontal Tab 分隔(AWS:从AWS CLI控制命令输出-文本输出格式)
$ 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 [...]
Run Code Online (Sandbox Code Playgroud)
AWS CLI选项:
--query "Contents[].Key"
=查询目录对象数组并获取其中的每个键 --output text
=输出为制表符分隔的文本,现在带有引号简单的方法
aws s3 ls s3://mybucket --recursive --human-readable --summarize|cut -c 29-
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
46472 次 |
最近记录: |