如何使用 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
开关。
我试过了
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
开关。