gpt4 book ai didi

bash - gsutil:参数列表太长

转载 作者:行者123 更新时间:2023-11-29 09:06:36 26 4
gpt4 key购买 nike

我正在尝试使用以下命令将数千个文件上传到 Google Cloud Storage:

gsutil -m cp *.json gs://mybucket/mydir

但是我得到这个错误:

-bash: Argument list too long

处理此问题的最佳方法是什么?我显然可以编写一个 bash 脚本来迭代不同的数字:

gsutil -m cp 92*.json gs://mybucket/mydir
gsutil -m cp 93*.json gs://mybucket/mydir
gsutil -m cp ...*.json gs://mybucket/mydir

但问题是我事先并不知道我的文件名是什么,因此编写该命令并非易事。

有没有一种方法可以使用 gsutil 本地处理这个问题(我不这么认为,from the documentation ),或者有一种方法可以在 bash 中处理这个问题,我可以在其中列出 10,000 个文件一次,然后将它们通过管道传输到 gsutil 命令?

最佳答案

Eric 的回答应该有效,但另一种选择是通过引用通配符表达式来依赖 gsutil 的内置通配符:

gsutil -m cp "*.json" gs://mybucket/mydir

更多解释:“参数列表太长”错误来自 shell,它具有用于扩展通配符的有限大小缓冲区。通过引用通配符,您可以防止 shell 扩展通配符,而是 shell 将该文字字符串传递给 gsutil。 gsutil 然后以流方式扩展通配符,即在执行操作时扩展通配符,因此它永远不需要缓冲无限量的扩展文本。因此,您可以对任意大的表达式使用 gsutil 通配符。在对象名称上使用 gsutil 通配符时也是如此,因此例如这会起作用:

gsutil -m cp "gs://my-bucket1/*" gs://my-bucket2

即使 gs://my-bucket1 的顶层有十亿个对象。

关于bash - gsutil:参数列表太长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44780079/

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