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强大。

阅读剩余
THE END