Поскольку здесь нет никаких ответов, я опубликую то, что я сделал. Я не прилагал никаких усилий, чтобы сделать это простым в использовании. YMMV.
- Заканчивать gsutil из GitHub
- Возвращайтесь совершить
d153cb33bfa8e96a32b2ebdee86e03251cfb71fd
, где я работал в.
- Восстановить фиксацию
46c09952d137e8704c1209bb8bdfbb2e73a2cd5d
после прочтения сообщения фиксации и убедиться, что вы знаете, почему это было заблокировано.
- Применить патч в нижней части этого сообщения. Он эффективно отключает
[
и ]
в качестве подстановочных знаков.
Я также подал 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 = (