首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gsutil:参数列表太长

gsutil:参数列表太长
EN

Stack Overflow用户
提问于 2017-06-27 12:16:18
回答 3查看 3.7K关注 0票数 6

我试图用以下命令将数千个文件上载到:

代码语言:javascript
复制
gsutil -m cp *.json gs://mybucket/mydir

但我知道这个错误:

代码语言:javascript
复制
-bash: Argument list too long

处理这件事最好的方法是什么?显然,我可以编写bash脚本来迭代不同的数字:

代码语言:javascript
复制
gsutil -m cp 92*.json gs://mybucket/mydir
gsutil -m cp 93*.json gs://mybucket/mydir
gsutil -m cp ...*.json gs://mybucket/mydir

但问题是,我事先不知道我的文件名是什么,所以编写该命令并不简单。

是否有一种方法可以用gsutil (我不这么认为,从文件中)来处理这个问题,或者在bash中可以一次列出10,000个文件,然后将它们输送到gsutil命令中?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-06-27 13:24:51

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

代码语言:javascript
复制
gsutil -m cp "*.json" gs://mybucket/mydir

要解释更多:“参数列表太长”错误来自shell,它为扩展通配符提供了一个有限大小的缓冲区。通过引用通配符,可以防止shell展开通配符,相反,shell将该文字字符串传递给gsutil。然后gsutil以流的方式扩展通配符,即在执行操作时扩展通配符,因此它不需要缓冲无限数量的扩展文本。因此,您可以在任意大的表达式上使用gsutil通配符。在对对象名使用gsutil通配符时,情况也是如此,因此,这样做是可行的:

代码语言:javascript
复制
gsutil -m cp "gs://my-bucket1/*" gs://my-bucket2

即使在gs://my 1的顶层有10亿个对象。

票数 23
EN

Stack Overflow用户

发布于 2017-06-27 12:42:01

如果您的文件名在换行符中是安全的,您可以使用gsutil cp的能力从stdin读取,例如

代码语言:javascript
复制
find . -maxdepth 1 -type f -name '*.json' | gsutil -m cp -I gs://mybucket/mydir

或者,如果您不确定您的名字是否安全,并且您的findxargs支持它,那么您可以这样做

代码语言:javascript
复制
find . -maxdepth 1 -type f -name '*.json' -print0 | xargs -0 -I {} gsutil -m cp {} gs://mybucket/mydir
票数 3
EN

Stack Overflow用户

发布于 2017-06-27 17:06:18

下面是您可以这样做的一种方法,使用xargs限制同时传递给gsutil的文件数量。空字节用于防止文件名中的空格或换行符出现问题。

代码语言:javascript
复制
printf '%s\0' *.json | xargs -0 sh -c 'copy_all () { 
    gsutil -m cp "$@" gs://mybucket/mydir
}
copy_all "$@"'

在这里,我们定义了一个函数,用于将文件参数放在gsutil命令的正确位置。整个过程应该是处理所有参数所需的最小次数,每次传递文件名参数的最大数量。

或者,您可以分别定义函数,然后export它(这是特定于bash的):

代码语言:javascript
复制
copy_all () { 
    gsutil -m cp "$@" gs://mybucket/mydir
}
printf '%s\0' *.json | xargs -0 bash -c 'export -f copy_all; copy_all "$@"'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44780079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档