为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 gsutil 删除 gcs 中除 1 之外的多个文件

如何使用 gsutil 删除 gcs 中除 1 之外的多个文件

慕神8447489 2023-12-12 15:46:08
我目前有这个:gsutil ls gs://basty/*_TZ001.*gs://basty/20201007_TZ001.csv gs://basty/20201008_TZ001.csv gs://basty/20201009_TZ001.csv我的问题是我有很多文件,我想删除除 1 ( 20201009_TZ001.csv)之外的所有文件我认为使用 bash 或 python 我不知道。
查看完整描述

3 回答

?
慕哥6287543

TA贡献1831条经验 获得超10个赞

您可以使用grep过滤结果(使用 -v 标志来反转结果)并使用xargs管道

gsutil ls gs://basty/*_TZ001.* |\
  grep -v 20201009_TZ001.csv |\
  xargs -i{} gsutil rm {}

为了确保这正是您想要的,您可以首先执行一个试运行命令:

gsutil ls gs://basty/*_TZ001.* |\
  grep -v 20201009_TZ001.csv |\
  xargs -i{} echo "Will delete: " {}


查看完整回答
反对 回复 2023-12-12
?
德玛西亚99

TA贡献1770条经验 获得超3个赞

我有另一个解决方案。这是基于临时保留的。我建议您在存储桶内创建一个新文件夹。然后,向此添加一个临时保留,如下所示:

gsutil -m  retention temp set gs://BUCKETNAME/FOLDER/

然后,将您不想删除的所有文件添加到此文件夹中。

执行命令:

gsutil rm gs://BUCKET/*

您将看到如何跳过FOLDER删除所有文件。

最后,取消保留:

gsutil -m  retention temp release  gs://BUCKETNAME/FOLDER/


查看完整回答
反对 回复 2023-12-12
?
MMTTMM

TA贡献1869条经验 获得超4个赞

还有一种解决方案

gsutil ls -r gs://basty/*_TZ001.* | grep -v 20201009_TZ001.csv | gsutil -m rm -I
  • 它工作得非常快,因为它同时删除文件而不是一个一个地删除(命令中的 -m 选项)

  • 它不使用使整个操作变慢的保持

  • gs://basty/*_TZ001.*如果您替换为,它适用于存储桶文件结构中任何级别的文件gs://basty/**


查看完整回答
反对 回复 2023-12-12
  • 3 回答
  • 0 关注
  • 138 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信