考虑此 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]'.
但我找不到有关“*”、“?”、“[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-
后的第一个数字为0
或1
的文件:
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/