具有排除模式的 Azure CLI 存储删除批处理

标签 azure azure-storage azure-cli

考虑此 blob 列表(或任何存储数据):

backup-2018-08-29-0000.archive
backup-2018-08-29-0100.archive
backup-2018-08-29-0200.archive
backup-2018-08-29-0300.archive
backup-2018-08-29-0400.archive
backup-2018-08-29-0500.archive
backup-2018-08-29-0600.archive
backup-2018-08-29-0700.archive
backup-2018-08-29-0800.archive
backup-2018-08-29-0900.archive
backup-2018-08-29-1000.archive
backup-2018-08-29-1100.archive
backup-2018-08-29-1200.archive
backup-2018-08-29-1300.archive
backup-2018-08-29-1400.archive
backup-2018-08-29-1500.archive
backup-2018-08-29-1600.archive
backup-2018-08-29-1700.archive
backup-2018-08-29-1800.archive
backup-2018-08-29-1900.archive
backup-2018-08-29-2000.archive
backup-2018-08-29-2100.archive
backup-2018-08-29-2200.archive
backup-2018-08-29-2300.archive

我希望删除除一个之外的所有文件。所以我最初的想法是使用 --pattern 标志。

--pattern

The pattern used for globbing files or blobs in the source. The supported patterns are '*', '?', '[seq]', and '[!seq]'.

source

但我找不到有关“*”、“?”、“[seq]”和“[!seq]”如何工作的信息。

在下面的命令中,什么模式将捕获除 backup-2018-08-29-0000.archive 之外的所有文件?

$ az storage blob delete-batch --source mycontainer --pattern <pattern>

更新

另一个问题是我在一年多的时间里收集了大约 10000 个备份。使用非批处理操作似乎不切实际。

最佳答案

我怀疑是否有一种简单的方法可以使用通配符来做到这一点(使用正则表达式会很容易)。 [seq][!seq] 的工作原理如下:

--pattern backup-2018-08-29-[01]???.archive

将删除所有29-后的第一个数字为01的文件:

backup-2018-08-29-0000.archive
backup-2018-08-29-0100.archive
backup-2018-08-29-0200.archive
backup-2018-08-29-0300.archive
backup-2018-08-29-0400.archive
backup-2018-08-29-0500.archive
backup-2018-08-29-0600.archive
backup-2018-08-29-0700.archive
backup-2018-08-29-0800.archive
backup-2018-08-29-0900.archive
backup-2018-08-29-1000.archive
backup-2018-08-29-1100.archive
backup-2018-08-29-1200.archive
backup-2018-08-29-1300.archive
backup-2018-08-29-1400.archive
backup-2018-08-29-1500.archive
backup-2018-08-29-1600.archive
backup-2018-08-29-1700.archive
backup-2018-08-29-1800.archive
backup-2018-08-29-1900.archive

[!seq] 只是否定了这一点:

--pattern backup-2018-08-29-[!01]???.archive

这将删除:

backup-2018-08-29-2000.archive
backup-2018-08-29-2100.archive
backup-2018-08-29-2200.archive
backup-2018-08-29-2300.archive

回答你的问题。我会将 blob 重命名(复制)为例如backup-keep.archive,然后使用模式 backup-2018-08-29-????.archive

删除剩余的备份

关于具有排除模式的 Azure CLI 存储删除批处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52070362/

相关文章:

azure - 需要使用变量组作为Azure管道中的输入参数

c# - TableServiceContext.CreateQuery 的替代方案

python - 上传到 Azure Blob 存储时设置内容类型

Azure 导入数据层应用程序没有标准数据库选项

Azure 发布版本不显示 bundle

azure - 取消 Azure 表查询

azure-cli - 使用 Azure CLI 和 JMESPath 过滤网络 vnet 对等列表

azure - 无法在azure devops管道中执行命令jq命令

azure - Azure CLI 和 Powershell cmdlet 之间的功能不一致

azure - 如何在 Azure Key Vault 中配置临近到期事件时间?