Linux如何搜索查找文件里面内容

article/2025/10/6 0:44:44

在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]$ 

clip_image001

 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]$ 

clip_image002

 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]$ 

clip_image003

  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)


http://chatgpt.dhexx.cn/article/MYKs4AXX.shtml

相关文章

Win10怎么搜索文件内容?Win10通过文件内容查找文件的方法

Win10怎么搜索文件内容&#xff1f;有些朋友电脑里的文件很多&#xff0c;想要找到某个文件&#xff0c;但是不记得文件名&#xff0c;只知道里面是有关什么的内容&#xff0c;想要通过搜索里面的文字内容来找到具体的文件&#xff0c;今天介绍Win10通过文件内容查找文件的方法…

文件查找(locate、find)

文件查找 在文件系统中查找符合条件的文件文件查找&#xff1a;locate,find 非实时查找&#xff08;数据库查找&#xff09;&#xff1a;locate 实时查找&#xff1a;find locate 查询系统上预建的文件索引数据库 /var/lib/mlocate.db 依赖于事先构建的索引 索引的构建是在系…

文件查找及具体实例

一、简介 Which&#xff1a;命令查找 Find&#xff1a;文件查找&#xff0c;针对文件名 Locate&#xff1a;文件查找&#xff0c;依赖数据库 二、命令文件查找 1.找到某些命令文件的位置 Which ls Whereis ls 三、文件查找find 实时查找工具&#xff0c;通过遍历指定路径…

Linux命令之查找文件find

概述 find 命令可以在目录层次结构中搜索符合指定条件的文件或目录&#xff0c;并且可以它们执行指定的操作。而搜索条件可以是文件权限、文件类型、日期、大小等。 语法 该命令的语法如下&#xff1a; # find 命令从指定的起始目录开始&#xff0c;递归地搜索其各个子目录&…

MySql数据库主键外键与数据库设计

MySql数据库主键外键与数据库设计 首先要指出的&#xff1a; 列、字段、属性是一个概念 行、记录、元组是一个概念 MySQL数据库CONSTRAINT约束&#xff1a;非空约束&#xff0c;唯一约束&#xff0c;主键约束&#xff0c;外键约束 show create table table_name\G;可以查看已…

mysql外键

虽然阿里不推荐使用MySQL外键&#xff0c;但是我们的项目如果对数据的一致性不太敏感&#xff0c;外键还是非常好的&#xff01;减少数据库的数据冗余。如果对数据一致性有着非常高的要求&#xff0c;如&#xff1a;使用事务&#xff0c;那么强烈建议该表及关联表不要使用外键&…

数据库外键理论及MySQL外键实现规定

文章目录 1. 关系数据库外键概念理论&#xff08;大学时学习的概念&#xff09;1.1 实体完整性1.2 ✅ 参照完整性1.3 用户定义完整性1.4 ✅ 参照完整性的SQL实现1.5 ✅ MySQL数据库操作示例1.6 ✅ neo4j中的关系和mysql的外键 2 MySQL中实现的规定2.1 基本概念2.2 ✅ 命名规则2…

数据库(外键及其约束理解)

一&#xff1a;首先是外键的定义 如果一个字段X在一张表&#xff08;表一&#xff09;中是主关键字&#xff0c;而在另外一张表&#xff08;表二&#xff09;中不是主关键字&#xff0c;则字段X称为表二的外键&#xff1b;换句话说如果关系模式R1中的某属性集不是自己的主键&am…

数据库的外键:主表与从表

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言Mysql的外键是什么&#xff0c;有何用&#xff1f;代码演示总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 最近在学习数据库&…

【数据库】外键的作用

前言 说到外键&#xff0c;一般就会牵扯出约束。不谈约束&#xff0c;起始外键就是一个普通的字段&#xff08;Column&#xff09;&#xff0c;起到一个关联的作用。 先把约束放一边&#xff0c;看看外键有哪些作用。 建立表中记录的一对一的关系 学生表&#xff1a; 手机表…

数据库之外键

外键约束&#xff08;FOREIGN KEY&#xff09;用来在两个表的数据之间建立连接&#xff0c;它可以是一列或者多列。一个表可以有一个或多个外键。 &#xff08;1&#xff09;外键定义&#xff1a;一张表中某一列的值使用的是另外一张表的主键值。这个列就被称为外键列。 &#…

数据库mysql表怎么设置外键_如何设置数据库中的外键

展开全部 创建数据库时就是有主键的创建了主键,但是表之间的关系没有联系,要建数据库关系图只e69da5e887aa62616964757a686964616f31333365653739有主键没有外键时不行的。 建外键的前提是此外键必须是另外一个表的主键。建外键的步骤: 第一步、打开要建外键表的设计器,右击…

数据库表外键设置

http://blog.csdn.net/pplsunny/article/details/7747340 我们在建立数据库的时候&#xff0c;需要为每张表指定一个主键&#xff0c;所谓主键就是能够唯一标识表中某一行的属性或属性组&#xff0c;一个表只能有一个主键&#xff0c;但可以有多个候选索引。因为主键可以唯一标…

数据库——外键的作用

我们用一个比较实际的例子来描述问题&#xff0c;并讲解外键作用&#xff1a; 当我们在网上购物的时候&#xff0c;我们有我们的帐号&#xff0c;还有我们所在不同地方的地址信息如公司&#xff0c;学校&#xff0c;家里&#xff0c;或者给亲戚朋友送个礼物&#xff0c;收货人…

mysql数据库添加外键的四种方式

文章目录 一、添加外键的四种方式二、文档下载 一、添加外键的四种方式 1、 建表时直接使用FOREIGN KEY&#xff0c;这种方式外键名称自动生成。如下图。 FOREIGN KEY (user_id) REFERENCES t_user(id)2、 建表时使用CONSTRAINT指定外键名称。如下图。 CONSTRAINT fk_studen…

彻底理解数据库外键

外键的定义 如果 公共关键字在一个关系中是 主关键字&#xff0c;那么这个 公共关键字被称为另一个关系的 外键。由此可见&#xff0c;外键表示了两个关系之间的相关联系。以另一个关系的外键作主关键字的表被称为主表&#xff0c;具有此外键的表被称为主表的从表。外键又称作外…

什么是数据库外键?

外键 Teacher_id就是student的外键 Teacher是主表&#xff0c;student是子表&#xff08;从表&#xff09; 外键就是一个表中的一个字段引用了另一个表中的主键&#xff0c;引用的表叫做子表&#xff0c;被引用的表叫做主表&#xff0c;外键是一种约束&#xff0c;描述的是表之…

数据库常用命令之外键(foreign key)多对多(总结,基础)

我是小白&#xff0c;刚接触MySQL不久&#xff0c;现阶段正在学习&#xff0c;为此在这里留下自己的学习笔记。如果有错误的地方还请大家见谅&#xff0c;评论或者私发我错误的地方哦&#xff0c;谢谢大家&#xff0c;嘿嘿~ 外键&#xff08;foreign key&#xff09; 引言&…

MySQL中的外键(foreign key)

阅读目录 前言一、外键作用及其限制条件1 外键的定义2 外键的作用3 外键创建限制 二、外键创建方法1 创建外键的语法2 举例&#xff08;1&#xff09;创建两张表&#xff08;2&#xff09;创建外键&#xff08;3&#xff09;查看表结构 三、验证外键作用1 先向主表中添加数据2 …