如何在Linux上查找包含特定文本的所有文件
时间:2019-05-19 01:26:05 来源:igfitidea点击:
如何使用命令行在Linux上搜索包含特定文本字符串的所有文件的目录树。
本教程将递归地搜索所有匹配字符串的文件。
本教程使用“grep”命令搜索文件中的字符串。
另外,还可以使用find命令搜索具有特定字符串的文件。
语法
grep -rwl “search-string” /path/to/serch/dir
Linux在所有文件中搜索单个字符串
下面的示例命令将在/var/log目录及其子目录的所有文件中搜索字符串“theitroad”。
$ grep -rlw "theitroad" /var/log /var/log/lfd.log /var/log/cloud-init.log /var/log/messages-20170226 /var/log/audit/audit.log.1 /var/log/btmp-20170315 /var/log/httpd/access_log-20170226
Linux中搜索包含多个字符串的所有文件
我们还可以使用-e开关指定要搜索的多个字符串。
这类似于 egrep命令。
下面的例子将在/var/log目录及其子目录中搜索包含字符串“theitroad”或者“https”的所有文件。
grep -rlw -e "theitroad" -e "https" /var/log
Linux在特定文件中搜索字符串
我们可以在匹配文件名条件的文件中搜索字符串。
下面的示例命令将在在/var/log目录及其子目录中的 .log文件中搜索字符串“theitroad”。
grep -rlw --include="*.log" -e "theitroad" /var/log
在搜索时排除一些文件
如果我们想排除一些匹配文件名标准的文件。
我们可以在命令中使用 -exclude选项排除一些文件。
例如,不要搜索 .txt文件。
grep -rlw --exclude="*.txt" -e "theitroad" /var/log
在搜索中排除一些目录
你也可以排除一些目录来跳过搜索。
例如,不要在名称中含有 http的文件夹中搜索字符串文件。
grep -rlw --exclude-dir="*http*" -e "theitroad" /var/log