Bas*_* SN 3 python bash google-cloud-storage gsutil google-cloud-platform
我目前有这个: gsutil ls gs://basty/*_TZ001.*
gs://basty/20201007_TZ001.csv
gs://basty/20201008_TZ001.csv
gs://basty/20201009_TZ001.csv
Run Code Online (Sandbox Code Playgroud)
我的问题是我有很多文件,我想删除除 1 ( 20201009_TZ001.csv)之外的所有文件
我以为使用 bash 或 python 我不知道。
您可以使用grep(使用 -v 标志反转结果)和使用xargs的管道过滤结果
gsutil ls gs://basty/*_TZ001.* |\
grep -v 20201009_TZ001.csv |\
xargs -i{} gsutil rm {}
Run Code Online (Sandbox Code Playgroud)
为了确保这正是您想要的,您可以先执行一个试运行命令:
gsutil ls gs://basty/*_TZ001.* |\
grep -v 20201009_TZ001.csv |\
xargs -i{} echo "Will delete: " {}
Run Code Online (Sandbox Code Playgroud)
我有另一个解决方案。这是基于临时持有。我建议您在存储桶内创建一个新文件夹。然后,给这个添加一个像这样的临时保留:
gsutil -m retention temp set gs://BUCKETNAME/FOLDER/
Run Code Online (Sandbox Code Playgroud)
然后,将所有不想删除的文件添加到此Folder。
执行命令:
gsutil rm gs://BUCKET/*
Run Code Online (Sandbox Code Playgroud)
您将看到如何跳过FOLDER删除所有文件。
最后,删除保留:
gsutil -m retention temp release gs://BUCKETNAME/FOLDER/
Run Code Online (Sandbox Code Playgroud)