网站搜索

如何在文件和目录中查找特定字符串或单词


您是否想要在整个 Linux 系统或给定目录中查找包含特定单词或文本字符串的所有文件。本文将指导您如何做到这一点,您将学习如何递归地挖掘目录以查找并列出包含给定文本字符串的所有文件。

解决这个问题的一个简单方法是使用 grep 模式搜索工具,它是一个功能强大、高效、可靠且最流行的命令行实用程序,用于从类 Unix 系统上的文件或目录中查找模式和单词。

另请阅读:关于字符类和括号表达式的 11 个高级 Linux ‘Grep’ 命令

下面的命令将通过递归和积极地搜索 ~/bin 目录来列出包含文本“check_root”的行的所有文件。

grep -Rw ~/bin/ -e 'check_root'

其中 -R 选项告诉 grep 递归地读取每个目录下的所有文件,仅当它们位于命令行和选项 -w 时才遵循符号链接 指示它仅选择那些包含构成整个单词的匹配的行,并且 -e 用于指定要搜索的字符串(模式)。

在搜索某些需要 root 权限的目录或文件时,您应该使用 sudo 命令(除非您使用 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'

就是这样!如果您知道在文件中查找字符串或单词的任何其他命令行技巧,请与我们分享或询问有关此主题的任何问题,请使用下面的评论表。