在Linux系统当中,如何搜、索查找文件里面的内容呢? 这个应该是系统维护、管理当中遇到最常见的需求。那么下面介绍,总结一下如何搜索、查找文件当中的内容。

搜索、查找文件当中的内容,一般最常用的是grep命令,另外还有egrep, vi命令也能搜索文件里面内容

1:搜索某个文件里面是否包含字符串,使用grep "search content" filename1, 例如

$ grep ORA alert_gsp.log

$ grep "ORA" alert_gsp.log

例如我们需要搜索、查找utlspadv.sql文件中包含ORA的字符内容

[oracle@DB-Server admin]$ grep "ORA" utlspadv.sql--   ORA-XXXXX:        Monitoring already started. If for example you want --   ORA-20111:--   ORA-20112:--   ORA-20113: 'no active monitoring job found'--   ORA-20113: 'no active monitoring job found'-- 0 |<PS> =>DBS2.REGRESS.RDBMS.DEV.US.ORACLE.COM 0 0 2 99.3% 0% 0.7% ""-- |<PR> DBS1.REGRESS.RDBMS.DEV.US.ORACLE.COM=> 100% 0% 0% "" |<PR> ...-- =>DBS2.REGRESS.RDBMS.DEV.US.ORACLE.COM 92 7 99.3% 0% 0.7% "" |<PR> ...-- |<C> CAPTURE_USER1=>DBS2.REGRESS.RDBMS.DEV.US.ORACLE.COM 2 0 0 0.E+00-- |<C> CAPTURE_USER1=>DBS2.REGRESS.RDBMS.DEV.US.ORACLE.COM-- ORA-20111:-- ORA-20112:--   ORA-20100:--   ORA-20113: 'no active monitoring job found'--   ORA-20113: 'no active monitoring job found'
[oracle@DB-Server admin]$ 

如上所示,这个是一个模糊匹配,其实我是想要查看ORA这类错误,那么我要过滤掉哪一些没有用的,搜索的内容修改一下即可(当然也可以使用特殊参数,后面有讲述),如下所示。

[oracle@DB-Server admin]$ grep "ORA-" utlspadv.sql--   ORA-XXXXX:        Monitoring already started. If for example you want --   ORA-20111:--   ORA-20112:--   ORA-20113: 'no active monitoring job found'--   ORA-20113: 'no active monitoring job found'-- ORA-20111:-- ORA-20112:--   ORA-20100:--   ORA-20113: 'no active monitoring job found'--   ORA-20113: 'no active monitoring job found'
[oracle@DB-Server admin]$ 

2: 如果你想搜索多个文件是否包含某个字符串,可以使用下面方式

grep "search content" filename1 filename2.... filenamen

grep "search content" *.sql

例如我想查看当前目录下,哪些sql脚本包含视图v$temp_space_header(注意:搜索的内容如果包含特殊字符时,必须进行转义处理,如下所示)

[oracle@DB-Server admin]$ grep "v\$temp_space_header" *.sql
catspacd.sql:drop public synonym v$temp_space_header;
catspacd.sql:drop public synonym gv$temp_space_header;
catspace.sql:create or replace view v_$temp_space_header as select * from v$temp_space_header;
catspace.sql:create or replace public synonym v$temp_space_header for v_$temp_space_header;
catspace.sql:create or replace view gv_$temp_space_header as select * from gv$temp_space_header;
catspace.sql:create or replace public synonym gv$temp_space_header
catspace.sql:            FROM gv$temp_space_header
[oracle@DB-Server admin]$ 

3:如果需要显示搜索文本在文件中的行数,可以使用参数-n

[oracle@DB-Server admin]$ grep  -n "v\$temp_space_header" *.sql
catspacd.sql:68:drop public synonym v$temp_space_header;
catspacd.sql:71:drop public synonym gv$temp_space_header;
catspace.sql:1952:create or replace view v_$temp_space_header as select * from v$temp_space_header;
catspace.sql:1953:create or replace public synonym v$temp_space_header for v_$temp_space_header;
catspace.sql:1956:create or replace view gv_$temp_space_header as select * from gv$temp_space_header;
catspace.sql:1957:create or replace public synonym gv$temp_space_header
catspace.sql:2357:            FROM gv$temp_space_header
[oracle@DB-Server admin]$ 

4: 如果搜索时需要忽略大小写问题,可以使用参数-i


[oracle@DB-Server admin]$ grep  "V\$TEMP_SPACE_HEADER" *.sql
[oracle@DB-Server admin]$ grep -i "V\$TEMP_SPACE_HEADER"  *.sql
catspacd.sql:drop public synonym v$temp_space_header;
catspacd.sql:drop public synonym gv$temp_space_header;
catspace.sql:create or replace view v_$temp_space_header as select * from v$temp_space_header;
catspace.sql:create or replace public synonym v$temp_space_header for v_$temp_space_header;
catspace.sql:create or replace view gv_$temp_space_header as select * from gv$temp_space_header;
catspace.sql:create or replace public synonym gv$temp_space_header
catspace.sql:            FROM gv$temp_space_header
[oracle@DB-Server admin]$ 

另外,例如检查安装的MySQL组件

[root@DB-Server init.d]# rpm -qa | grep -i mysqlMySQL-devel-5.6.23-1.linux_glibc2.5MySQL-client-5.6.23-1.linux_glibc2.5MySQL-server-5.6.23-1.linux_glibc2.5

5:从文件内容查找不匹配指定字符串的行:

$ grep –v "被查找的字符串" 文件名

例如查找某些进程时,我们不想显示包含命令grep ora_mmon的进程,如下所示

[oracle@DB-Server admin]$ ps -ef  | grep ora_mmon
oracle   16675 16220  0 00:09 pts/1    00:00:00 grep ora_mmon
oracle   21412     1  0 Aug22 ?        00:00:07 ora_mmon_gsp
[oracle@DB-Server admin]$ ps -ef  | grep ora_mmon  | grep -v grep
oracle   21412     1  0 Aug22 ?        00:00:07 ora_mmon_gsp
[oracle@DB-Server admin]$ 

6:搜索、查找匹配的行数:

$ grep -c "被查找的字符串" 文件名

[oracle@DB-Server admin]$
[oracle@DB-Server admin]$ grep   "v\$temp_space_header" *.sql
catspacd.sql:drop public synonym v$temp_space_header;
catspacd.sql:drop public synonym gv$temp_space_header;
catspace.sql:create or replace view v_$temp_space_header as select * from v$temp_space_header;
catspace.sql:create or replace public synonym v$temp_space_header for v_$temp_space_header;
catspace.sql:create or replace view gv_$temp_space_header as select * from gv$temp_space_header;
catspace.sql:create or replace public synonym gv$temp_space_header
catspace.sql:            FROM gv$temp_space_header
[oracle@DB-Server admin]$ grep -c  "v\$temp_space_header"  catspacd.sql
2
[oracle@DB-Server admin]$ grep -c  "v\$temp_space_header"  catspace.sql
5
[oracle@DB-Server admin]$ 

7:有些场景,我们并不知道文件类型、或那些文件包含有我们需要搜索的字符串,那么可以递归搜索某个目录以及子目录下的所有文件

[oracle@DB-Server ~]$ grep -r "v\$temp_space_header" /u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin//u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspace.sql:create or replace view v_$temp_space_header as select * from v$temp_space_header;/u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspace.sql:create or replace public synonym v$temp_space_header for v_$temp_space_header;/u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspace.sql:create or replace view gv_$temp_space_header as select * from gv$temp_space_header;/u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspace.sql:create or replace public synonym gv$temp_space_header/u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspace.sql: FROM gv$temp_space_header/u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspacd.sql:drop public synonym v$temp_space_header;/u01/app/oracle/product/11.1.0/dbhome_1/rdbms/admin/catspacd.sql:drop public synonym gv$temp_space_header;[oracle@DB-Server ~]$

8:如果我们只想获取那些文件包含搜索的内容,那么可以使用下命令

9:如果只想获取和整个搜索字符匹配的内容,那么可以使用参数w

你可以对比一下两者的区别

[oracle@DB-Server admin]$ grep -w "ORA" utlspadv.sql--   ORA-XXXXX:        Monitoring already started. If for example you want --   ORA-20111:--   ORA-20112:--   ORA-20113: 'no active monitoring job found'--   ORA-20113: 'no active monitoring job found'-- ORA-20111:-- ORA-20112:--   ORA-20100:--   ORA-20113: 'no active monitoring job found'--   ORA-20113: 'no active monitoring job found'
[oracle@DB-Server admin]$ grep  "ORA" utlspadv.sql--   ORA-XXXXX:        Monitoring already started. If for example you want --   ORA-20111:--   ORA-20112:--   ORA-20113: 'no active monitoring job found'--   ORA-20113: 'no active monitoring job found'-- 0 |<PS> =>DBS2.REGRESS.RDBMS.DEV.US.ORACLE.COM 0 0 2 99.3% 0% 0.7% ""-- |<PR> DBS1.REGRESS.RDBMS.DEV.US.ORACLE.COM=> 100% 0% 0% "" |<PR> ...-- =>DBS2.REGRESS.RDBMS.DEV.US.ORACLE.COM 92 7 99.3% 0% 0.7% "" |<PR> ...-- |<C> CAPTURE_USER1=>DBS2.REGRESS.RDBMS.DEV.US.ORACLE.COM 2 0 0 0.E+00-- |<C> CAPTURE_USER1=>DBS2.REGRESS.RDBMS.DEV.US.ORACLE.COM-- ORA-20111:-- ORA-20112:--   ORA-20100:--   ORA-20113: 'no active monitoring job found'--   ORA-20113: 'no active monitoring job found'
[oracle@DB-Server admin]$ 

10: grep命令结合find命令搜索

[oracle@DB-Server admin]$ find . -name '*.sql' -exec grep -i 'v\$temp_space_header' {} \; -print
create or replace view v_$temp_space_header as select * from v$temp_space_header;
create or replace public synonym v$temp_space_header for v_$temp_space_header;
create or replace view gv_$temp_space_header as select * from gv$temp_space_header;
create or replace public synonym gv$temp_space_headerFROM gv$temp_space_header
./catspace.sql
drop public synonym v$temp_space_header;
drop public synonym gv$temp_space_header;
./catspacd.sql
[oracle@DB-Server admin]$ 

11: egrep -w -R 'word1|word2' ~/klbtmp

12: vi命令其实也能搜索文件里面的内容,只不过没有grep命令功能那么方便、强大。

参考资料:

http://www.cyberciti.biz/faq/howto-search-find-file-for-text-string/

Linux如何搜索查找文件里面内容 - 潇湘隐者 - 博客园 (cnblogs.com)

Linux如何搜索查找文件里面内容相关推荐

  1. Linux如何全盘搜索MySQL文件_Linux如何搜索查找文件里面内容

    在Linux系统当中,如何搜.索查找文件里面的内容呢? 这个应该是系统维护.管理当中遇到最常见的需求.那么下面介绍,总结一下如何搜索.查找文件当中的内容. 搜索.查找文件当中的内容,一般最常用的是gr ...

  2. linux中如何查找文件中内容

    Linux查找文件内容的常用命令方法. 从文件内容查找匹配指定字符串的行: $ grep "被查找的字符串" 文件名 例子:在当前目录里第一级文件夹中寻找包含指定字符串的.in文件 ...

  3. linux根据文件大小,linux 根据文件大小查找文件

    inux下的find命令用来查找文件,通过man find就知道它是无所不能的.所以按照文件大小来查找文件就不在话下.从man find搜索size,可以看到如下信息: -size n[cwbkMG] ...

  4. linux用grep查找文件内容

    2019独角兽企业重金招聘Python工程师标准>>> linux用grep查找文件内容 博客分类: java 从文件内容查找匹配指定字符串的行:  $ grep "被查找 ...

  5. linux find 命令通配符,linux find命令查找文件详解

    首页 > Linux教程 > 常用命令 > find 查找文件 linux find命令查找文件详解 linux中find命令用来在指定目录下查找文件,如果使用该命令时,不设置任何参 ...

  6. linux 按名字查找文件夹,详细解读linux系统中使用Find命令查找文件

    摘要:文件查找是一个经常用到的功能,在linux系统中查找文件的命令比较多:find.locate.whereis .which等,今天心月就来详细解读find文件查找命令的使用. 文件查找是一个经常 ...

  7. linux 命令美丽,美丽的程序猿-Linux下那些查找文件的小技巧-find

    原标题:美丽的程序猿-Linux下那些查找文件的小技巧-find 一.按照文件名匹配查找 1. 查找当前目录下的文件tmp.sh find . –name tmp.sh 可以看出,使用.查找是查找当前 ...

  8. 搜索很久_装了SSD你还需要这个软件才更快,搜索查找文件数据从此不再等待

    在速度性能方面,HDD和SSD相比简直是云泥之别.一个7200转的HDD读写速度才最多可达200MB/S,15000转也才勉强能达到300M/S.而且HDD,速度要快,转速得快,转速越快,越是吵人.而 ...

  9. linux使用grep查找文件内容,Linux中使用grep命令搜索文件名及文件内容的方法

    这篇文章主要介绍了Linux中使用grep命令搜索文件名及文件内容的方法,同时文中还介绍了将匹配结果高亮显示的方法,相当实用,需要的朋友可以参考下 从文件中搜索并显示文件名 当从多个文件中搜索时,默认 ...

  10. linux下查找文件及内容 grep

    每一种操作系统都是由成千上万个不同种类的文件所组成的.其中有系统本身自带的文件,用户自己的文件,还有共享文件等等.我们有时候经常忘记某份文件放在硬盘中的哪个地方. 在微软的Windows操作系统中要查 ...

最新文章

  1. SPU表管理之删除SPU表数据
  2. 经典控制~系统的极点
  3. NeuIPS | 蛋白设计新方法?基于图的蛋白生成模型
  4. cassandra mysql_cassandra命令行操作
  5. java折半查找(正常的折半查找)
  6. vuex第三弹vuex之actions(前端网备份)
  7. C#创建桌面快捷方式
  8. navicat 添加外键1215错误
  9. numpy+pandas+matplotlib绘制误差条形图
  10. data structure最短路径问题
  11. python def函数报错详解_python自定义函数def的应用详解
  12. (收藏)《博客园精华集》ASP.NET分册
  13. 从游戏设计的角度看《红色警戒2》
  14. 当网页无法正常显示时更换浏览器
  15. web第六课:div标签和span标签
  16. JAVA多态的理解及应用
  17. 华为Mate50和小米13 参数对比
  18. 我的淘宝新店的辛酸与感恩
  19. Promise ,Promise.all 和Promise.race的区别
  20. Matlab添加工具箱Toolbox的方法

热门文章

  1. Cloud 2.0时代,华为云EI助力内蒙煤焦化产业走向智能
  2. 51nod 1384
  3. Centos7之安装谷歌浏览器
  4. 你还在为找素材发愁吗?自媒体高手都知道的免费自媒体素材网
  5. 天津奥的斯服务器显示PKS WT,天津奥的斯电梯故障代码大全
  6. ps快捷键大法(最全)
  7. boost电路输出电流公式_boost计算公式
  8. JAVA第11章枚举与泛型总结
  9. range,xrange,arange比较
  10. 下载win10镜像_安装配置win10虚拟机_获取win10产品密钥