我目前有这个: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: " {}

德玛西亚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/

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/**
添加回答
举报
0/150
提交
取消