我正在使用Ubuntu机器并尝试使用以下命令来搜索文本:
此命令以递归方式检查给定目录中是否存在该单词:
1)这<hello>是我搜索的单词,它在从当前目录开始的所有文件中递归搜索.它工作正常.
grep -r "<hello>" .
2)现在我想将搜索限制为仅限于特定文件,xml仅限于文件:
grep --include=\*.{java} -rnw '/home/myfolder/' -e "<hello>"
Run Code Online (Sandbox Code Playgroud)
这次命令花费更多时间,最后没有给出任何结果.但我的文件有内容.
我已经浏览了这个链接 - 如何在Linux上找到包含特定文本的所有文件?写我的第二个命令.
我的第二个命令有问题吗?还有一个执行速度快的备用命令吗?
使用它可能更好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)返回文件名,而不是匹配本身.