【问题标题】:Azure CLI: storage blob delete-batch to delete all blobs excluding two directoriesAzure CLI:存储 blob delete-batch 以删除除两个目录之外的所有 blob
【发布时间】:2020-01-02 22:33:30
【问题描述】:

我有一个 PowerShell 脚本,当前删除了我的 $web 容器中的所有 blob。

az storage blob delete-batch --account-name myaccountname --source $web

这很好用,但现在我想排除两个目录被删除。我查看了the documentation,但我仍然不确定排除语法的外观。

我确定我必须使用--pattern 参数。

用于在源中通配文件或 blob 的模式。支持的模式是 '*'、'?'、'[seq]' 和 '[!seq]'。

我希望有人可以让我知道 --pattern 参数的值应该是什么样子,这样我就可以删除 $web 容器中的所有内容,除了 /aaa/bbb 目录中的 blob。

az storage blob delete-batch --account-name myaccountname --source $web --pattern ???

【问题讨论】:

    标签: azure azure-storage azure-blob-storage azure-cli


    【解决方案1】:

    根据我的测试,如果你想参数--pattern来排除一个目录被删除,你可以使用表达式'[[!]]'

    az storage blob delete-batch --source <container_name> --account-name <storage_account_name> --pattern '[!<folder name>]*'
    

    例如:

    1. 在我运行命令之前,我的容器的结构如下。

    1. 运行命令
        az storage blob delete-batch --source test --account-name blobstorage0516 --pattern '[!user&&!people]*'
    
    1. 运行命令后容器的结构如下。

    【讨论】:

    • 哇!我尝试了许多带有括号和 not (!) 的组合,但我什至没有接近这个。非常感谢@Jim Xu 解决了这个问题。你是一头野兽。我希望这对以后的其他人有所帮助。
    • 对于登陆这里的任何其他人,请注意,我必须在我的 Azure DevOps 发布任务中的 --pattern 值周围使用双引号 (")。使用单引号会导致大块。
    • @TomFaltesek 我通过 Azure DevOps 遇到了--pattern 的问题,您能举一个您使用的格式的示例吗?每当我使用方括号时,都会被告知我输入了无效字符。我尝试过的一个例子是--pattern "![app-configs]*"
    • 尝试将 not 放在括号内。 --pattern "[!app-configs]*"
    • 然后go here 就这个问题投票。
    猜你喜欢
    • 2020-06-28
    • 1970-01-01
    • 1970-01-01
    • 2014-07-20
    • 1970-01-01
    • 2020-04-09
    • 2015-09-23
    • 1970-01-01
    • 2020-03-12
    相关资源
    最近更新 更多