如何 grep 查找 c:\

如何 grep 查找 c:\

我正在使用 cygwin 的 grep 来查找 c 驱动器上硬编码路径的所有实例。正在做:

grep -r "c:\\" .

给出grep: trailing backslash

有人知道我该怎么做吗?

答案1

您的错误是因为您使用了双引号 ( "),它允许 shell 在到达 之前解释内容grep

尝试grep -r 'c:\\' .一下。

echo 'c:\' > test
ire@localhost$ cat test
c:\
ire@localhost$ grep -r 'c:\\' test
c:\

解释:\对于 shell 和 grep 都有特殊的含义。它用作转义字符,以允许按字面解释下一个字符。

当您执行此操作时grep "c:\\",shell 会获取内容,将其转换为文字字符串c:\,并将其传递给grepgrep看到单个反斜杠,并将其解释为转义字符。但没有任何角色跟随\逃跑!所以,它抱怨是很合理的。

使用单引号 ( ') 可以保护内容免受 shell 的影响。但您仍然需要两个斜杠,因为您需要告诉grep这是您要搜索的字面反斜杠。

或者,你也可以这样做:

grep -rF 'C:\' .

或者

grep -rF "C:\\" .

grep 的选项-F(以前称为fgrep命令)告诉grep我们要查找固定字符串,因此没有什么可以转义的,并且反斜杠并不是特殊的grep(但仍然适用于双引号内的 shell)。

答案2

或者直接使用"c:/"(也可以在 Windows 下使用)。

相关内容