gpt4 book ai didi

windows - gsutil rsync排除无法在Windows Powershell上运行的模式

转载 作者:行者123 更新时间:2023-12-02 23:34:59 25 4
gpt4 key购买 nike

我正在尝试在Powershell中使用gsutil rsync将文件复制到gs存储桶,而忽略了一些文件扩展名,但是却收到错误消息,说“。*。scss”不是命令:

PS W:\> gsutil -m rsync -x ".*^.gz$^|.*^.scss$^|.*^.less$^|.*^.pdf$^|.*^.zip$" -d -r ./ gs://BUCKET
'.*.scssecho' is not recognized as an internal or external command
operable program, or a batch file.

# With the originally proposed solution:
PS W:\> gsutil -m rsync -x '.*\.(gz|scss|less|pdf|zip)$' -d -r ./ gs://BUCKET
'scss' is not recognized as an internal or external command,
operable program, or a batch file.

documentation指示使用 ^作为转义字符而不是 \并转义 |字符。我想念什么?

最佳答案

  • 使用单引号('...'),这可以防止PowerShell解释字符串,尤其是$字符。在里面。
  • 由于将正则表达式传递给rsync,请使用通常的\ -escapeing来转义正则表达式元字符,例如.
  • 奇怪的是,gsutil另外要求cmd.exe元字符为^换码的,而不管调用 shell 和原始引号如何,在这种情况下,意味着 |必须转义为^|
  • js2010提到了可能的原因:gsutil可执行文件是gsutil.cmd,即,它实现为(cmd.exe)批处理文件-尽管显然写得不好。
  • AndyO报告说,如果创建具有以下内容的自定义gsutil.cmd批处理文件,则可以避免此问题(假设python.exe在PATH中并且是正确的版本):@python.exe "C:\path\to\gsutil.py" %*

  • # From PowerShell
    gsutil -m rsync -x '.*\.gz$^|.*\.scss$^|.*\.less$^|.*\.pdf$^|.*\.zip$' -d -r ./ gs://BUCKET

    此外,您的正则表达式可以简化:

    # From PowerShell
    gsutil -m rsync -x '.*\.(gz^|scss^|less^|pdf^|zip)$' -d -r ./ gs://BUCKET

    重新转义和引用常规点:

    只是在 cmd.exe中, ^充当转义字符;在PowerShell中,它是 `(反引号)。

    还要注意,在 cmd.exe中,您只需要在未加引号的参数中添加 ^,而无需在 "..."内部。

    在PowerShell中, '...'字符串是按字面意义(常规)使用的,根本不需要转义( '本身作为 ''除外)。

    "..."(可扩展字符串)内部,必须使用 `来有选择地转义 $字符作为文字,并且还可以使用转义序列(例如 `n)嵌入控制字符(在这种情况下为换行符),并且在PowerShell中[Core] 6+,另外按其代码点嵌入Unicode代码字符(例如 `u{40}字符的 @。)

    关于windows - gsutil rsync排除无法在Windows Powershell上运行的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58086539/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com