azure blob 存储 cli 列表目录

azure blob storage cli list directories

我正在编写一个使用 Azure 存储 CLI 的 PowerShell 脚本。我正在寻找一种方法来仅列出特定路径下的目录。我可以使用 az storage blob list 轻松列出 blob,但我希望我可以在不使用 post 处理结果的情况下获取目录。鉴于 Azure blob 存储具有平面文件结构,我不太确定这是否可行,但认为有人可能知道我不知道的事情。

谢谢。

我最终决定这不是一个真正的选择,因为文件系统是扁平的并且 "paths" 只是虚拟的。我决定使用不需要基于这些虚拟目录的批处理的脚本转向不同的方向。

如前所述,Azure Blob 存储是扁平的。对于分层文件系统,请查看 Azure 文件存储。

查看 CLI 快速入门:https://docs.microsoft.com/en-us/azure/storage/files/storage-how-to-use-files-cli

您可以使用 --delimiter 选项来更接近您想要的内容 -- 顶级文件夹(和 blob),但不是嵌套的 blob:

# suppress nested blobs
$ az storage blob list -c foo --delimiter '/' --output table 

Name       Blob Type    Content Type             
---------  -----------  ------------------------- 
dir1/
dir2/
dir3/
dir4/
file.txt   BlockBlob    text/plain; charset=utf-8

这会抑制更深层次的所有斑点。从那里,您可以过滤到 "folders",因为文件夹条目有 元数据,而 blob 有。文件夹条目也以 / 结尾。如果您提供查询选项,az CLI 也可以为您过滤:

az storage blob list -c foo --delimiter '/' --query '[].name | [?ends_with(@, `/`)]

[ "dir1/",
  "dir2/",
  "dir3/",
  "dir4/" ]