代码之家  ›  专栏  ›  技术社区  ›  Ian McIntyre Silber

bash:在backticks中转义字符

  •  1
  • Ian McIntyre Silber  · 技术社区  · 14 年前

    我试图在bash命令中转义backticks中的字符,主要是处理文件名中导致命令失败的空格。

    到目前为止,我得到的命令是:

    grep -Li badword `grep -lr goodword *`
    

    此命令将生成一个不包含单词“badword”但包含“goodword”的文件列表。

    2 回复  |  直到 14 年前
        1
  •  3
  •   JaakkoK    14 年前

    即使正确地进行转义,当 goodword grep 达到命令行长度的限制。最好用管道输送第一个 格雷普 到第二 格雷普 ,像这样

    grep -lr -- goodword * | xargs grep -Li -- badword
    

    这将正确处理包含空格的文件,但如果文件名中包含换行符,则会失败。至少GNU 格雷普 xargs 支持用nul字节分隔文件名,如下所示

    grep -lrZ -- goodword * | xargs -0 grep -Li -- badword
    

    编辑:添加了双虚线 -- 格雷普 当某些文件名以 - 会被解释为 格雷普 作为附加选项。

        2
  •  1
  •   William Niu    14 年前

    把它改写成:

    grep -lr goodword * | grep -Li badword