【问题标题】:gsutil - regex with alternative not workinggsutil - 正则表达式与替代不工作
【发布时间】: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 尝试同样的事情。那么至少你应该能够使用单引号,如果这很重要的话。 | 至少不应被视为壳管。

标签: python regex gsutil


【解决方案1】:

这应该可以工作:

gsutil -m rsync -x ".*country\.csv$^|.*version\.csv$" gs://[bucket_id] test/

参见例如How to pass a quoted pipe character to cmd.exe?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多