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

我目前有这个: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 我不知道。


慕神8447489
浏览 139回答 3
3回答

慕哥6287543

您可以使用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: " {}

德玛西亚99

我有另一个解决方案。这是基于临时保留的。我建议您在存储桶内创建一个新文件夹。然后,向此添加一个临时保留,如下所示:gsutil -m  retention temp set gs://BUCKETNAME/FOLDER/然后,将您不想删除的所有文件添加到此文件夹中。执行命令:gsutil rm gs://BUCKET/*您将看到如何跳过FOLDER删除所有文件。最后,取消保留:gsutil -m  retention temp release  gs://BUCKETNAME/FOLDER/

MMTTMM

还有一种解决方案gsutil ls -r gs://basty/*_TZ001.* | grep -v 20201009_TZ001.csv | gsutil -m rm -I它工作得非常快,因为它同时删除文件而不是一个一个地删除(命令中的 -m 选项)它不使用使整个操作变慢的保持gs://basty/*_TZ001.*如果您替换为,它适用于存储桶文件结构中任何级别的文件gs://basty/**
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python