rom*_*rav 2 command-line grep quoting regular-expression
我正在使用的命令:
find . -type f -name "*.sql" -exec grep -i -l 'schema_name.' {} +
Run Code Online (Sandbox Code Playgroud)
我要搜索的是所有包含schema_name.. 但是 find 命令忽略了最后一个.,只是在寻找schema_name而不是schema_name.
cuo*_*glm 13
那是grep问题,不是find。
grep默认情况下使用正则表达式匹配模式,模式schema_name.意味着字符串后面的任何字符schema_name。
如果你想.从字面上匹配点,你必须用反斜杠转义它\:
find . -type f -name "*.sql" -exec grep -il 'schema_name\.' {} +
Run Code Online (Sandbox Code Playgroud)
或使用-F选项:
find . -type f -name "*.sql" -exec grep -Fil 'schema_name.' {} +
Run Code Online (Sandbox Code Playgroud)