gpt4 book ai didi

python - "gsutil rm"命令使用 STDIN

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:38:10 27 4
gpt4 key购买 nike

我在 Linux 环境中使用 gsutil 来管理 GCS 中的文件。我喜欢能够使用命令

gsutil -m cp -I gs://...

前面有一些其他命令将 STDIN 传递给 gsutil 以上传文件;这样一来,我可以维护一个已上传文件的本地列表,或者生成特定的模式来上传和传递它们。

我希望能够执行类似的命令

gsutil -m rm -I gs://...

类似地清理文件。目前,我构建了一个大文件列表来删除并使用以下代码运行它:

while read line
do
gsutil rm gs://...
done < "$myfile.txt"

与多线程“gsutil -m rm...”命令相比,这非常慢,并且当您必须一次处理列表中的一个文件时,启用 -m 标志无效。我也试过只运行

gsutil -m rm gs://.../* # remove everything
<my command> | gsutil -m cp -I gs://.../ # put back the pieces that I want

但这涉及到重新复制大量数据并且浪费大量时间;数据已经存在,只需要删除一些。任何想法将不胜感激。另外,我在重命名文件的两端都没有很大的灵 active ;否则,上传前的快速重命名将处理所有这些。

最佳答案

作为一个临时解决方案,由于我们现在没有 rm-I 选项,那么只创建一个包含您想要的所有对象的字符串怎么样?在循环中删除然后使用 gsutil -m rm 删除它?您也可以使用一个简单的 python 脚本来执行此操作,该脚本从 python 中调用 gsutil 命令作为一个单独的进程。

扩展您之前的示例,可能类似于以下内容(免责声明:我的 bash-fu 不是最好的,我还没有测试过):

objects=''
while read line
do
objects="$objects gs://$line"
done
gsutil -m rm $objects

关于python - "gsutil rm"命令使用 STDIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22643235/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com