如何在Unix/Linux中使用Grep命令搜索子目录

时间:2020-01-09 14:16:34  来源:igfitidea点击:

我想搜索并找到所有包含$HOME/project/school目录中名为main()的单词的文件。
如何使用grep命令查找包含Unix或Linux操作系统下所有子目录的文本?

grep命令用于在文本中搜索命令行上指定的模式(单词)。
解决方法:您需要使用以下语法:

grep -r 'word' /path/to/dir
-r选项用于遍历整个目录树。

例如,以下将搜索当前目录及其所有子目录(包括其子目录)中的所有文件,以查找包含单词main()的每一行:

grep -r 'main()' ~/projects/school

您还可以使用-l选项显示通常已从中打印输出的每个文件的名称:

grep -rl 'main()' ~/projects/school

您可以使用-H选项为每个匹配项打印文件名:

grep -rH 'main()' ~/projects/school

最后,您也可以使用-n选项显示行号:

grep -rHn 'main()' ~/projects/school

-i选项指示grep忽略大小写。
因此,例如,以下示例可以非常容易地转换为不区分大小写的搜索,如下所示(匹配main(),MAIN(),mAiN()等):

grep -rHni 'main()' ~/projects/school

在此示例中,搜索IP地址192.168.1.5:

grep -Hrn --color '\<192.168.1.5\>' /etc