2016-04-21 2 views
0

$ GSUtil дю -sh гс: // test123/GSUtil: Невозможно прикоснуться файл с кронштейнами именем

CommandException: Облако гс папок: // test123/TestFile [1994]/содержит подстановочные; gsutil в настоящее время не поддерживает объекты с подстановочными знаками в их имени.

$ GSUtil мв гс: // test123/TestFile [1994]/гс: // test123/testfile_1994/

CommandException: Облако гс папок: // test123/TestFile [1994]/содержит подстановочные знаки; gsutil в настоящее время не поддерживает объекты с подстановочными знаками в их имени.

$ GSUtil мв "гс: // test123/TestFile \ [1994 \] /" гс: // test123/testfile_1994/

CommandException: Нет URL-адреса совпадающая:

Я не могу для отображения каталога или переименования папки. Что мне делать?

ответ

1

Поскольку здесь нет никаких ответов, я опубликую то, что я сделал. Я не прилагал никаких усилий, чтобы сделать это простым в использовании. YMMV.

  1. Заканчивать gsutil из GitHub
  2. Возвращайтесь совершить d153cb33bfa8e96a32b2ebdee86e03251cfb71fd, где я работал в.
  3. Восстановить фиксацию 46c09952d137e8704c1209bb8bdfbb2e73a2cd5d после прочтения сообщения фиксации и убедиться, что вы знаете, почему это было заблокировано.
  4. Применить патч в нижней части этого сообщения. Он эффективно отключает [ и ] в качестве подстановочных знаков.

Я также подал a bug против gsutil для повторной поддержки.

Вот патч:

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 = (
Смежные вопросы