gsutil:无法使用名称

时间:2016-04-21 20:39:19

标签: cloud bucket gsutil

  

$ gsutil du -sh gs:// test123 /

     

CommandException:云文件夹gs:// test123 / testfile [1994] /包含一个通配符; gsutil目前不支持名称中带有通配符的对象。

     

$ gsutil mv gs:// test123 / testfile [1994] / gs:// test123 / testfile_1994 /

     

CommandException:云文件夹gs:// test123 / testfile [1994] /包含一个通配符; gsutil目前不支持名称中带有通配符的对象。

     

$ gsutil mv" gs:// test123 / testfile \ [1994 \] /" GS:// test123 / testfile_1994 /

     

CommandException:没有匹配的网址:

我无法列出目录,或重命名该文件夹。我该怎么办?

1 个答案:

答案 0 :(得分:1)

由于这里没有任何答案,我会发布我所做的事情。我没有付出任何努力使这个易于使用。 YMMV。

  1. 从GitHub
  2. 查看gsutil
  3. 返回提交d153cb33bfa8e96a32b2ebdee86e03251cfb71fd,这是我工作的地方。
  4. 在阅读提交消息后确认您已知道此阻止的原因后,还原提交46c09952d137e8704c1209bb8bdfbb2e73a2cd5d
  5. 应用此邮件底部的补丁。它有效地禁用了[]作为通配符。
  6. 我还对gsutil提交了a bug以重新引入支持。

    这是补丁:

    diff --git a/gslib/storage_url.py b/gslib/storage_url.py
    index 8f1df95..30308ac 100644
    --- a/gslib/storage_url.py
    +++ b/gslib/storage_url.py
    @@ -35,7 +35,7 @@ S3_VERSION_REGEX = re.compile(r'(?P<object>.+)#(?P<version_id>.+)$')
     # Matches file strings of the form 'file://dir/filename'
     FILE_OBJECT_REGEX = re.compile(r'([^:]*://)(?P<filepath>.*)')
     # Regex to determine if a string contains any wildcards.
    -WILDCARD_REGEX = re.compile(r'[*?\[\]]')
    +WILDCARD_REGEX = re.compile(r'\*')
    
    
     class StorageUrl(object):
    diff --git a/gslib/wildcard_iterator.py b/gslib/wildcard_iterator.py
    index c3194c2..8cde4df 100644
    --- a/gslib/wildcard_iterator.py
    +++ b/gslib/wildcard_iterator.py
    @@ -202,7 +202,8 @@ class CloudWildcardIterator(WildcardIterator):
               url = StorageUrlFromString(urls_needing_expansion.pop(0))
               (prefix, delimiter, prefix_wildcard, suffix_wildcard) = (
                   self._BuildBucketFilterStrings(url.object_name))
    -          prog = re.compile(fnmatch.translate(prefix_wildcard))
    +          prog = re.compile(fnmatch.translate(
    +              prefix_wildcard).replace("[", "\[").replace("]", "\]"))
    
               # If we have a suffix wildcard, we only care about listing prefixes.
               listing_fields = (