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

How to use grep to find in a directory by a regex?

我试过了

grep -R '.*invalidTemplateName.*' -regex './online_admin/.*/UTF-8/.*'

在目录正则表达式模式 './online_admin/.*/UTF-8/.*' 中查找 '.invalidTemplateName.' 正则表达式的所有可能数学运算,但它不起作用。我收到消息:

grep: ./online_admin/.*/UTF-8/.*: No such file or directory

如果我使用

grep -R '.*invalidTemplateName.*' .

它在当前目录的所有子目录中查找压倒性的。如何在 grep 中指定目录模式?可能吗?

使用 find 你可以做类似的事情:

find /abs/path/to/directory -maxdepth 1 -name '.*invalidTemplateName.*'

使用 name 参数,您可以直接按名称过滤。您还可以对过滤器字符串使用通配符。 使用 maxdepth 参数,您可以指定递归级别来查找文件。 1表示在/abs/path/to/directory中查找,2表示在/abs/path/to/directory中查找,也在/abs/path/to/directory中查找一级目录。

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

find ./online_admin/*/UTF-8/* -type f -exec grep -H "invalidTemplateName" {} \;

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