如何使用 aws cli 命令仅显示 s3 存储桶中的目录

shr*_*xor 8 bash amazon-s3 amazon-web-services aws-cli devops

我需要显示 s3 存储桶中存在的所有目录,其中某些目录被隐藏,只有当我将版本过滤为“显示”而不是隐藏时才会再次显示。

同样的情况也适用于目录内我们看不到文件的文件,但是当我们选择版本中的过滤器为“显示”时,它会显示文件。

我们如何在aws-cli中看到这些文件和目录。如果您有解决方案,请帮忙。


例如:

roxor@ubuntu:~$ aws s3 ls s3://dw-etl-source-prod
workday dsr
Run Code Online (Sandbox Code Playgroud)

我需要获取 4 个目录,但由于这些目录包含版本控制,因此未显示。如果我筛选版本以显示它会提供 aws s3 UI 中的所有文件,但我如何使用 AWS CLI 执行相同操作。

nik*_*eee 7

如果您使用的是基于 POSIX 的系统并且想要使用熟悉的aws s3 ls语法,请尝试:

aws s3 ls --recursive <s3Uri> | cut -c32- | xargs -d '\n' -n 1 dirname | uniq
Run Code Online (Sandbox Code Playgroud)

这是一个快速解释。截至 2020 年 11 月,aws s3 ls按以下格式打印对象:

<date> <time> <size> <path>
Run Code Online (Sandbox Code Playgroud)

<path>这个想法是使用 从此列表中提取cut,将其传递给以dirname提取目录名称,最后使用uniq以避免重复。cut -c32-将 s3 列表修剪到第 31 个字符。如果您的文件太大,您可能需要调整此项。