如何使用 grep 通过正则表达式在目录中查找?

St.*_*rio 2 regex bash find

我试过

grep -R '.*invalidTemplateName.*' -regex './online_admin/.*/UTF-8/.*'
Run Code Online (Sandbox Code Playgroud)

找到所有可能出现的 '. 无效的模板名称。' 目录正则表达式模式中的正则表达式'./online_admin/.*/UTF-8/.*',但它不起作用。我收到消息:

grep: ./online_admin/.*/UTF-8/.*: No such file or directory
Run Code Online (Sandbox Code Playgroud)

如果我使用

grep -R '.*invalidTemplateName.*' .
Run Code Online (Sandbox Code Playgroud)

它在当前目录的所有子目录中查找,这是压倒性的。如何在 grep 中指定目录模式?是否可以?

arc*_*444 5

在这里查找可能是更好的选择:

find ./online_admin/*/UTF-8/* -type f -exec grep -H "invalidTemplateName" {} \;
Run Code Online (Sandbox Code Playgroud)

查找将在您想要的位置找到所有文件,包括子目录UTF-8,然后grep对每个文件执行。该-H参数确保文件名将与匹配项一起打印。如果您只需要文件名,请改用该-L开关。