你是否想要在整个Linux系统或给定目录中查找包含特定文字或字符串的所有文件? 本文将指导您如何做到这一点,您将学习如何递归挖掘目录以查找并列出包含给定字符串文本的所有文件。
一个简单的方法是使用grep模式搜索工具 ,它是一个功能强大,高效,可靠和最流行的命令行工具,用于从类Unix系统上的文件或目录中查找模式和单词。
另请 参见 : 11高级Linux对字符类和括号表达式的'Grep'命令
下面的命令将通过递归和积极地搜索~/bin
目录来列出包含文本“ check_root ”的所有文件。
$ grep -Rw ~/bin/ -e 'check_root'
在目录中找到一个单词
-R
选项告诉grep读取每个目录下的所有文件,递归的,只有在命令行上有符号链接,选项-w指示它只选择那些包含形成整个单词的匹配的行, -e
是用于指定要搜索的字符串(模式)。
搜索某些需要root权限的目录或文件时,应使用 (除非您使用root帐户管理系统)。
$ sudo grep -Rw / -e 'check_root'
要忽略大小写差别,请使用-i
选项,如下所示:
$ grep -Riw ~/bin/ -e 'check_root'
如果您想知道文本字符串的确切位置,请包含-n
选项。
$ grep -Rinw ~/bin/ -e 'check_root'
用行号查找字符串
假定您想要搜索的目录中有多种类型的文件,您还可以使用--include
选项指定要搜索的文件的类型,例如,通过扩展名进行搜索。
这个例子指示grep只查看所有的.sh
文件。
$ grep -Rnw --include=\*.sh ~/bin/ -e 'check_root'
此外,可以使用以下命令搜索多个模式。
$ grep -Rinw ~/bin/ -e 'check_root' -e 'netstat'
在文件中查找多个单词
而已! 如果您知道任何其他命令行技巧来查找文件中的字符串或单词,请与我们分享或询问有关此主题的任何问题,请使用下面的注释表单。