当前位置:首页 » 操作系统 » linux内容搜索

linux内容搜索

发布时间: 2022-02-25 23:54:26

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

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

[oracle@DB-Server ~]$ grep -r "v$temp_space_header" /u01/app/oracle/proct/11.1.0/dbhome_1/rdbms/admin/

/u01/app/oracle/proct/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/proct/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/proct/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/proct/11.1.0/dbhome_1/rdbms/admin/catspace.sql:create or replace public synonym gv$temp_space_header

/u01/app/oracle/proct/11.1.0/dbhome_1/rdbms/admin/catspace.sql: FROM gv$temp_space_header

/u01/app/oracle/proct/11.1.0/dbhome_1/rdbms/admin/catspacd.sql:drop public synonym v$temp_space_header;

/u01/app/oracle/proct/11.1.0/dbhome_1/rdbms/admin/catspacd.sql:drop public synonym gv$temp_space_header;

[oracle@DB-Server ~]$

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

[oracle@DB-Server ~]$ grep -H -r "v$temp_space_header" /u01/app/oracle/proct/11.1.0/dbhome_1/rdbms/admin/ | cut -d: -f1

/u01/app/oracle/proct/11.1.0/dbhome_1/rdbms/admin/catspace.sql

/u01/app/oracle/proct/11.1.0/dbhome_1/rdbms/admin/catspace.sql

/u01/app/oracle/proct/11.1.0/dbhome_1/rdbms/admin/catspace.sql

/u01/app/oracle/proct/11.1.0/dbhome_1/rdbms/admin/catspace.sql

/u01/app/oracle/proct/11.1.0/dbhome_1/rdbms/admin/catspace.sql

/u01/app/oracle/proct/11.1.0/dbhome_1/rdbms/admin/catspacd.sql

/u01/app/oracle/proct/11.1.0/dbhome_1/rdbms/admin/catspacd.sql

[oracle@DB-Server ~]$ grep -H -r "v$temp_space_header" /u01/app/oracle/proct/11.1.0/dbhome_1/rdbms/admin/ | cut -d: -f1 | uniq

/u01/app/oracle/proct/11.1.0/dbhome_1/rdbms/admin/catspace.sql

/u01/app/oracle/proct/11.1.0/dbhome_1/rdbms/admin/catspacd.sql

[oracle@DB-Server ~]$

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_header
FROM 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命令功能那么方便、强大。

⑵ linux find能搜索文件里面的内容吗

find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间等。若跟据文件的内容进行查找,需使用grep命令。
说明:
1、find命令的一般形式为find [PATH] [option] [action]
find命令部分选项说明:
-amin<分钟>:查找在指定时间曾被存取过的文件或目录,单位以分钟计算;
-atime<24小时数>:查找在指定时间曾被存取过的文件或目录,单位以24小时计算;
-cmin<分钟>:查找在指定时间之时被更改过的文件或目录;
-ctime<24小时数>:查找在指定时间之时被更改的文件或目录,单位以24小时计算;
-daystart:从本日开始计算时间;
-exec<执行指令>:假设find指令的回传值为True,就执行该指令;
-false:将find指令的回传值皆设为False;
-gid<群组识别码>:查找符合指定之群组识别码的文件或目录;
-group<群组名称>:查找符合指定之群组名称的文件或目录;
-help或--help:在线帮助;-inum:查找符合指定的inode编号的文件或目录;
-ls:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出;
-maxdepth<目录层级>:设置最大目录层级;
-mindepth<目录层级>:设置最小目录层级;
-mmin<分钟>:查找在指定时间曾被更改过的文件或目录,单位以分钟计算;
-mount:此参数的效果和指定“-xdev”相同;
-mtime<24小时数>:查找在指定时间曾被更改过的文件或目录,单位以24小时计算;
-name<范本样式>:指定字符串作为寻找文件或目录的范本样式;
-newer<参考文件或目录>:查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;
-nogroup:找出不属于本地主机群组识别码的文件或目录;
-noleaf:不去考虑目录至少需拥有两个硬连接存在;
-nouser:找出不属于本地主机用户识别码的文件或目录;
-ok<执行指令>:此参数的效果和指定“-exec”类似,但在执行指令之前会先询问用户,若回答“y”或“Y”,则放弃执行命令;
-path<范本样式>:指定字符串作为寻找目录的范本样式;
-perm<权限数值>:查找符合指定的权限数值的文件或目录;
-print:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为每列一个名称,每个名称前皆有“./”字符串;
-print0:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为全部的名称皆在同一行;
-printf<输出格式>:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式可以自行指定;
-size<文件大小>:查找符合指定的文件大小的文件;
-type<文件类型>:只寻找符合指定的文件类型的文件;
-uid<用户识别码>:查找符合指定的用户识别码的文件或目录;
-used<日数>:查找文件或目录被更改之后在指定时间曾被存取过的文件或目录,单位以日计算;
-user<拥有者名称>:查找符和指定的拥有者名称的文件或目录;
-xdev:将范围局限在先行的文件系统中;
-xtype<文件类型>:此参数的效果和指定“-type”参数类似,差别在于它针对符号连接检查。
2、grep命令的一般形式为grep [options]
grep命令部分参数说明
-c:只输出匹配行的计数。
-I:不区分大 小写(只适用于单字符)。
-h:查询多文件时不显示文件名。
-l:查询多文件时只输出包含匹配字符的文件名。
-n:显示匹配行及 行号。
-s:不显示不存在或无匹配文本的错误信息。
-v:显示不包含匹配文本的所有行。
pattern正则表达式主要参数:
\: 忽略正则表达式中特殊字符的原有含义。
^:匹配正则表达式的开始行。
$: 匹配正则表达式的结束行。
\<:从匹配正则表达 式的行开始。
\>:到匹配正则表达式的行结束。
[ ]:单个字符,如[A]即A符合要求 。
[ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。
。:所有的单个字符。
* :有字符,长度可以为0。

⑶ linux下查找文件内容

GVIM
可以分割窗口实现查找多个文件的功能。不过最好是用命令行这个强大的工具了。
比如查找
/home/znsys/
下所有含
VoIP
的文件名称:
grep
-l
'VoIP'
/home/znsys/*
比如查找
/home/znsys/
文件夹下的所有第三层目录内所有文件中包含
“networking"
的行:
如这些目录:
/home/znsys/client_1/data/
/home/znsys/client_2/data/
/home/znsys/vendor_1/data/
命令为:
grep
-i
/home/znsys/*/data/*
'networking'
搜索
----
whereis
<程序名称>
查找软件的安装路径
-b
只查找二进制文件
-m
只查找帮助文件
-s
只查找源代码
-u
排除指定类型文件
-f
只显示文件名
-B
<目录>
在指定目录下查找二进制文件
-M
<目录>
在指定目录下查找帮助文件
-S
<目录>
在指定目录下查找源代码
locate
<文件名称>
在文件索引数据库中搜索文件
-d
<数据库路径>
搜索指定数据库
updatedb
更新文件索引数据库
find
[路径]
<表达式>
查找文件
-name
<表达式>
根据文件名查找文件
-iname
<表达式>
根据文件名查找文件,忽略大小写
-path
<表达式>
根据路径查找文件
-ipath
<表达式>
根据路径查找文件,忽略大小写
-amin
<分钟>
过去N分钟内访问过的文件
-atime
<天数>
过去N天内访问过的文件
-cmin
<分钟>
过去N分钟内修改过的文件
-ctime
<天数>
过去N天内修改过的文件
-anewer
<参照文件>
比参照文件更晚被读取过的文件
-cnewer
<参照文件>
比参照文件更晚被修改过的文件
-size
<大小>
根据文件大小查找文件,单位b
c
w
k
M
G
-type
<文件类型>
根据文件类型查找文件。b
块设备
c
字符设备
d
目录
p
管道文件
f
普通文件
l
链接
s
端口文件
-user
<用户名>
按归属用户查找文件
-uid
<uid>
按UID查找文件
-group
<群组名>
按归属群组查找文件
-gid
<gid>
按GID查找文件
-empty
查找空文件
grep
<字符串>|"<正则表达式>"
[文件名]
在文件中搜索内容

⑷ Linux中如何在文件中搜索内容

楼上回答的很好。

用grep 命令,你可以在终端man grep 详细查看用法,也可以度娘查询
比如你想找/tmp/test.txt 这个文件中包含Linux
grep "Linux" /tmp/test.tx
比如你想找/tmp/目录中找包含 Linux
grep -R "Linux" /tmp/

⑸ Linux 怎么搜索关键字

方法一:find命令
find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件。
命令格式:find <指定目录> <指定条件> <指定动作>
- <指定目录>: 所要搜索的目录及其所有子目录。默认为当前目录。
- <指定条件>: 所要搜索的文件的特征。
- <指定动作>: 对搜索结果进行特定的处理。
如果什么参数也不加,find默认搜索当前目录及其子目录,并且不过滤任何结果(也就是返回所有文件),将它们全都显示在屏幕上。
使用实例:
$ find . -name 'my*'
搜索当前目录(含子目录,以下同)中,所有文件名以my开头的文件。
$ find . -name 'my*' -ls
搜索当前目录中,所有文件名以my开头的文件,并显示它们的详细信息。
$ find . -type f -mmin -10
搜索当前目录中,所有过去10分钟中更新过的普通文件。如果不加-type f参数,则搜索普通文件+特殊文件+目录。

方法二:locate命令
locate命令其实是"find -name"的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。
使用实例:
$ locate /etc/sh
搜索etc目录下所有以sh开头的文件。
$ locate ~/m
搜索用户主目录下,所有以m开头的文件。
$ locate -i ~/m
搜索用户主目录下,所有以m开头的文件,并且忽略大小写。

⑹ linux模糊搜索文件内容

搜索文件可以用find命令,我经常用来查找配置文件,例如查找nginx配置文件nginx.conf find / -name "nginx*" *代表匹配后面的所有。推荐一本书《linux就该这么学》网上免费下载有时间可以看看

⑺ linux系统如何在文本内搜索字符串

进入VI后,按/,然后输入字符串,回车,按N或者n是向前向后搜索该字符串

⑻ linux查找内容命令

find,用于在文件树中查找文件并作相应的处理

-name:按照文件名查找文件

-perm:按照文件权限查找文件

-user:按照文件属主来查找文件

-size:按照指定的文件大小查找文件【+n:大于,-n:小于,n:等于】

-group:按照文件所属的组来查找文件

-mtime<-n><+n>:按照文件更改时间来查找文件,-n表示n天之内,+n表示n天以前

-newer file1 file2:查找更改时间在file1和file2之间的文件

例如:

  • find -mtime -2:查找48小时修改过的文件

  • find -name ".log":查找当前目录以".log"结尾的文件

  • find /opt/soft/test -perm 777:查找指定目录下权限为777的文件

  • find -type f -name "*.log":查找当前目录下以".log"结尾的普通文件

  • find -type d | sort:查找当前所有目标目录并排序

  • find /home/wansw -size +20M:查找大于20M的文件

  • locate指令,可以快速定位文件路径,利用事先建立的系统中的所有文件名称和路径的locate数据库,无需遍历整个文件系统,查询速度较快,为了保证查询准确性,需要定期更新。《Linux就该这么学》

  • updatedb:第一次运行前,创建locate数据库

  • grep,用于过滤/搜索指定字符串。可以使用正则表达式,能配合多种命令使用。

    用法:grep 【选项】 查找内容 源文件

    -A:显示符合的行及之后的内容

    -B:显示符合的行及之前的内容

    -C:显示符合的行及前后的内容

    -c:计算符合的行数目

    -n:显示匹配行和行号

    -i:忽略大小写

    规则表达式

    :'grep'表示匹配所有以grep开头的行

    '表示匹配所有以grep结尾的行

    .:'gr.p'表示匹配'gr'后面接任意字符然后是'p'

    :'grep'表示匹配一个或多个空格后紧跟grep的行

    []:[Gg]rep表示匹配Grep与grep

    []:[A-FH-Z]rep表示匹配不以A-F、H-Z开头并紧跟rep的行

    例如(grep命令大多数时候多要和别的命令一起使用才有意义):

    ps -ef | grep -c SVN:查找指定的进程的个数

    cat test.txt | grep -f test2.txt:从text2.txt中读取关键字后在test.txt中搜索

    cat test.txt | grep nf text2.txt:从text2.txt中读取关键字后在text.txt中搜索并显示行号

    grep 'linux' text.txt test2.txt:从多个文件中搜索关键字'linux'

    cat test.txt | grep -E 'ed|at':显示包含ed或at的行

⑼ Linux里怎样查找文件内容

Linux查找文件内容的常用命令方法。
从文件内容查找匹配指定字符串的行:
$ grep "被查找的字符串" 文件名
例子:在当前目录里第一级文件夹中寻找包含指定字符串的.in文件
grep "thermcontact" */*.in
从文件内容查找与正则表达式匹配的行:
$ grep –e “正则表达式” 文件名
查找时不区分大小写:
$ grep –i "被查找的字符串" 文件名
查找匹配的行数:
$ grep -c "被查找的字符串" 文件名
从文件内容查找不匹配指定字符串的行:
$ grep –v "被查找的字符串" 文件名
从根目录开始查找所有扩展名为.log的文本文件,并找出包含”ERROR”的行
find / -type f -name "*.log" | xargs grep "ERROR"
例子:从当前目录开始查找所有扩展名为.in的文本文件,并找出包含”thermcontact”的行
find . -name "*.in" | xargs grep "thermcontact"

⑽ linux中怎样在所有的文件中搜索关键字

# find . |xargs grep "bash"
./.bashrc:# .bashrc

热点内容
安卓上哪里下大型游戏 发布:2024-12-23 15:10:58 浏览:189
明日之后目前适用于什么配置 发布:2024-12-23 14:56:09 浏览:55
php全角半角 发布:2024-12-23 14:55:17 浏览:829
手机上传助手 发布:2024-12-23 14:55:14 浏览:732
什么样的主机配置吃鸡开全效 发布:2024-12-23 14:55:13 浏览:830
安卓我的世界114版本有什么 发布:2024-12-23 14:42:17 浏览:711
vbox源码 发布:2024-12-23 14:41:32 浏览:278
诗经是怎么存储 发布:2024-12-23 14:41:29 浏览:660
屏蔽视频广告脚本 发布:2024-12-23 14:41:24 浏览:420
php解析pdf 发布:2024-12-23 14:40:01 浏览:819