gsutil - 正则表达式与替代不工作
Posted
技术标签:
【中文标题】gsutil - 正则表达式与替代不工作【英文标题】:gsutil - regex with alternative not working 【发布时间】:2016-09-29 02:21:04 【问题描述】:我希望在 Google 存储桶和我的本地目录之间同步内容。我想在执行此操作时忽略某些文件。
就像我想忽略以 country.csv 和 version.csv 结尾的文件。
所以我使用以下正则表达式,它不起作用
gsutil -m rsync -x ".*country\.csv$|.*version\.csv$" gs://[bucket_id] test/
我已经在 regex101.com 上测试了这个正则表达式
另一方面,当我尝试使用单个正则表达式时,它可以工作
gsutil -m rsync -x ".*country\.csv$" gs://[bucket_id] test/
我正在使用 Windows 机器。 我指的是gsutil documentation
谁能确定问题出在哪里?
编辑:
gsutil 上的错误“不是内部或外部命令、可运行程序或批处理文件”
【问题讨论】:
文档建议在正则表达式周围使用单引号。你试过了吗? @SilentMonk:单引号在 Windows 上不起作用,上面提到的单正则表达式也仅适用于双引号 双反斜杠呢?在 Unix 上,单引号防止扩展,即 `\` 被本地传递给 python,这会导致 python 字符串中出现本地反冲,这正是你想要的。 @SilentMonk:双反斜杠在 Windows 上也不起作用。我必须使用单个反斜杠来转义点(。) 使用powershell
而不是cmd
尝试同样的事情。那么至少你应该能够使用单引号,如果这很重要的话。 |
至少不应被视为壳管。
【参考方案1】:
这应该可以工作:
gsutil -m rsync -x ".*country\.csv$^|.*version\.csv$" gs://[bucket_id] test/
参见例如How to pass a quoted pipe character to cmd.exe?
【讨论】:
以上是关于gsutil - 正则表达式与替代不工作的主要内容,如果未能解决你的问题,请参考以下文章
通过正则表达式或通配符一次操作 gsutil 中的多个存储桶