如何在unix中搜索特定文件中的文本

lea*_*ner 5 unix grep

我正在使用Ubuntu机器并尝试使用以下命令来搜索文本:

此命令以递归方式检查给定目录中是否存在该单词:

1)<hello>是我搜索的单词,它在从当前目录开始的所有文件中递归搜索.它工作正常.

grep -r "<hello>" .

2)现在我想将搜索限制为仅限于特定文件,xml仅限于文件:

grep --include=\*.{java} -rnw '/home/myfolder/' -e "<hello>"
Run Code Online (Sandbox Code Playgroud)

这次命令花费更多时间,最后没有给出任何结果.但我的文件有内容.

我已经浏览了这个链接 - 如何在Linux上找到包含特定文本的所有文件?写我的第二个命令.

我的第二个命令有问题吗?还有一个执行速度快的备用命令吗?

fed*_*qui 9

使用它可能更好find,因为grep包含/排除可能会有点令人困惑:

find -type f -name "*.xml" -exec grep -l 'hello' {} +
Run Code Online (Sandbox Code Playgroud)

这将查找名称完成的文件.xml并对其执行操作grep 'hello'.使用-l(L)我们使文件名打印,没有匹配的行.

说明

  • find -type f 这将查找给定目录结构中的文件.
  • -name "*.xml"选择名称完成的文件.xml.
  • -exec对命令的每个结果执行find命令.
  • -exec grep -l 'hello' {} +执行grep -l 'hello'给定的文件.随着{} +我们指的匹配的名字(这是喜欢做grep 'hello' file,但指的由提供的文件的名称find命令).此外,grep -l(L)返回文件名,而不是匹配本身.