linux grep 查找(linux 文件内容查找匹配)
老铁们,大家好,相信还有很多朋友对于linux grep 查找和linux 文件内容查找匹配的相关问题不太懂,没关系,今天就由我来为大家分享分享linux grep 查找以及linux 文件内容查找匹配的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!
Linux下find命令和grep命令查找文件
在使用linux时,经常需要进行文件查找。其中查找的命令主要有find和grep。
两个命令是有区的。
(1)find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间等。
(2)grep是根据文件的内容进行查找,会对文件的每一行按照给定的模式(patter)进行匹配查找。
一.find命令
基本格式:find path expression
1.按照文件名查找
(1)find/-name httpd.conf
在根目录下查找文件httpd.conf,表示在整个硬盘查找
(2)find/etc-name httpd.conf
在/etc目录下文件httpd.conf
(3)find/etc-name' srm'
使用通配符*(0或者任意多个)。表示在/etc目录下查找文件名中含有字符串‘srm’的文件
(4)find.-name'srm*'
表示当前目录下查找文件名开头是字符串‘srm’的文件
Linux中使用grep命令搜索文件名及文件内容的方法
从文件中搜索并显示文件名
当你从不止一个的文件中搜索时,默认它将显示文件名:
代码如下:
grep"word"文件名
grep root/etc/*
示例输出:
代码如下:
/etc/bash.bashrc: See"man sudo_root" for details.
/etc/crontab:17**** root cd/ run-parts--report/etc/cron.hourly
/etc/crontab:25 6*** root test-x/usr/sbin/anacron||( cd/ run-parts--report/etc/cron.daily)
/etc/crontab:47 6** 7 root test-x/usr/sbin/anacron||( cd/ run-parts--report/etc/cron.weekly)
/etc/crontab:52 6 1** root test-x/usr/sbin/anacron||( cd/ run-parts--report/etc/cron.monthly)
/etc/group:root:x:0:
grep:/etc/gshadow: Permission denied
/etc/logrotate.conf: create 0664 root utmp
/etc/logrotate.conf: create 0660 root utmp
每行开始的第一个部分是文件名(如:/etc/crontab、/etc/group)。使用-l选项可以只显示文件名:
代码如下:
grep-l"string" filename
grep-l root/etc/*
示例输出:
代码如下:
/etc/aliases
/etc/arpwatch.conf
grep:/etc/at.deny: Permission denied
/etc/bash.bashrc
/etc/bash_completion
/etc/ca-certificates.conf
/etc/crontab
/etc/group
你也可以逆转输出;使用-L选项来输出那些不匹配的文件的文件名:
代码如下:
grep-L"word" filename
grep-L root/etc/*
示例输出:
代码如下:
/etc/apm
/etc/apparmor
/etc/apparmor.d
/etc/apport
/etc/apt
/etc/avahi
/etc/bash_completion.d
/etc/bindresvport.blacklist
/etc/blkid.conf
/etc/bluetooth
/etc/bogofilter.cf
/etc/bonobo-activation
/etc/brlapi.key
根据文件内容查找文件
输入以下命令:
代码如下:
grep'string'*.txt
grep'main('*.c
grep'#include'*.c
grep'getChar*'*.c
grep-i'ultra'*.conf
grep-iR'ultra'*.conf
其中
-i:忽略模式(匹配字符串 valid、 VALID、 ValID)和输入文件(匹配 file.c FILE.c FILE.C)的大小写。
-R:递归读取每个目录下的所有文件。
高亮匹配到的模式
在搜索大量文件的时候你可以轻松地高亮模式:
代码如下:
$ grep--color=auto-iR'getChar();'*.c
为查找到的模式显示文件名和行号
你也许需要显示文件名和行号:
代码如下:
$ grep--color=auto-iRnH'getChar();'*.c
其中,
-n:在输出的每行前面添加以 1开始的行号。
-H:为每个匹配打印文件名。要搜索多个文件时这是默认选项。(LCTT译注:-h选项强制隐藏文件名;另外-l和-L选项用于仅显示匹配/不匹配的文件名,而-H和-h用于控制在显示匹配行前显示/不显示文件名,注意区分。)
代码如下:
$grep--color=auto-nH'DIR'*
输出样例:
你也可以使用 find命令:
代码如下:
$ find.-name"*.c"-print| xargs grep"main("
Linux-grep,查找文件里面内容
搜索、查找文件内容最常用命令是grep。egrep,vi命令也可实现文件内容搜索。
1:搜索特定文件包含特定字符串
使用命令:grep"search content" filename1
示例:grep ORA utlspadv.sql查找utlspadv.sql文件中包含ORA的字符内容
$ grep"ORA" utlspadv.sql
若需过滤特定内容,可修改搜索内容。
2:搜索多个文件中包含特定字符串
使用命令:grep"search content" filename1 filename2.... filenamen
示例:grep"search content"*.sql查看当前目录下所有.sql文件中包含特定内容
$ grep"v\$temp_space_header"*.sql查找包含v\$temp_space_header的.sql文件
3:显示搜索文本在文件中的行数
使用命令:grep-n"search content" filename
示例:$ grep-n"v\$temp_space_header"*.sql查看包含v\$temp_space_header的行数
4:忽略大小写搜索
使用命令:grep-i"search content" filename
示例:[oracle@DB-Server admin]$ grep-i"V\$TEMP_SPACE_HEADER"*.sql查找大写搜索内容的文件
5:检查安装的MySQL组件
使用命令:rpm-qa| grep-i mysql查看已安装的MySQL组件
6:查找不匹配指定字符串的行
使用命令:grep–v"被查找的字符串"文件名
示例:查找不包含命令grep ora_mmon的进程
[oracle@DB-Server admin]$ ps-ef| grep ora_mmon| grep-v grep
7:搜索匹配的行数
使用命令:grep-c"被查找的字符串"文件名
示例:查找特定字符串在文件中的行数
8:递归搜索目录及其子目录下所有文件
使用命令:grep-r"被查找的字符串"/目录
示例:搜索特定字符串在/u01目录下的所有文件
9:获取包含搜索内容的文件
使用命令:grep-H-r"被查找的字符串"/目录| cut-d:-f1
示例:获取/u01目录下包含特定字符串的文件
10:获取完整匹配搜索字符的内容
使用命令:grep-w"被查找的字符串"文件名
对比两种搜索方式的差异。
11:结合find命令搜索
使用命令:find.-name'*.sql'-exec grep-i'v\$temp_space_header'{}\;-print
示例:在当前目录下查找所有.sql文件中包含v\$temp_space_header的内容
12:vi命令也可用于文件内容搜索,但功能不如grep强大。