linux 搜索内容 Linux怎么学
大家好,今天来为大家解答linux 搜索内容这个问题的一些问题点,包括Linux怎么学也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~
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强大。
linux下查找文件内容
一.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’的文件
2.按照文件特征查找
(1)find/-amin-10#查找在系统中最后10分钟访问的文件(access time)
(2)find/-atime-2#查找在系统中最后48小时访问的文件
(3)find/-empty#查找在系统中为空的文件或者文件夹
(4)find/-group cat#查找在系统中属于 group为cat的文件
(5)find/-mmin-5#查找在系统中最后5分钟里修改过的文件(modify time)
(6)find/-mtime-1#查找在系统中最后24小时里修改过的文件
(7)find/-user fred#查找在系统中属于fred这个用户的文件
(8)find/-size+10000c#查找出大于10000000字节的文件(c:字节,w:双字,k:KB,M:MB,G:GB)
(9)find/-size-1000k#查找出小于1000KB的文件
3.使用混合查找方式查找文件
参数有:!,-and(-a),-or(-o)。
(1)find/tmp-size+10000c-and-mtime+2#在/tmp目录下查找大于10000字节并在最后2分钟内修改的文件
(2)find/-user fred-or-user george#在/目录下查找用户是fred或者george的文件文件
(3)find/tmp!-user panda#在/tmp目录中查找所有不属于panda用户的文件
二、grep命令
基本格式:find expression
1.主要参数
[options]主要参数:
-c:只输出匹配行的计数。
-i:不区分大小写
-h:查询多文件时不显示文件名。
-l:查询多文件时只输出包含匹配字符的文件名。
-n:显示匹配行及行号。
-s:不显示不存在或无匹配文本的错误信息。
-v:显示不包含匹配文本的所有行。
pattern正则表达式主要参数:
\:忽略正则表达式中特殊字符的原有含义。
^:匹配正则表达式的开始行。
$:匹配正则表达式的结束行。
\<:从匹配正则表达式的行开始。
\>:到匹配正则表达式的行结束。
[ ]:单个字符,如[A]即A符合要求。
[- ]:范围,如[A-Z],即A、B、C一直到Z都符合要求。
.:所有的单个字符。
*:有字符,长度可以为0。
2.实例
(1)grep'test' d*#显示所有以d开头的文件中包含 test的行
(2)grep‘test’ aa bb cc#显示在aa,bb,cc文件中包含test的行
(3)grep‘[a-z]\{5\}’ aa#显示所有包含每行字符串至少有5个连续小写字符的字符串的行
(4)grep magic/usr/src#显示/usr/src目录下的文件(不含子目录)包含magic的行
(5)grep-r magic/usr/src#显示/usr/src目录下的文件(包含子目录)包含magic的行
(6)grep-w pattern files:只匹配整个单词,而不是字符串的一部分(如匹配’magic’,而不是’magical’),
linux使用shell搜索查找文本的几种方法分享
linux下,日常开发的时候免不了查看开发的应用的日志,但只要是系统上线,就不像原来那样在本地调试的那么简单了日志的大小很大,服务器一般也是Linux、HP、AIX等,每次都下载回来就麻烦的要命,在开源中国看到下面内容,很实用。
1.使用find和xargs命令
复制代码代码如下:
find dir| xargs grep str# dir是指某个目录
find file| xargs grep str# file是指某个文件2.
第2种方法是直接使用grep命令
复制代码代码如下:
grep str dir/*# dir是指某个目录,但不递归搜索其子目录
grep-r str dir/*#使用-r选项,递归搜索其子目录
grep str file#file是指某个文件
3.第3种方法是综合以上两种
复制代码代码如下:
#!/bin/bash
#find_str.sh
if [$#-lt"2" ]; then
echo"Usage: `basename$0` path name [option]"
exit 1
fi
#!-r表示递归处理子目录,-i表示忽略大小写
path=$1
name=$2
shift
shift
for option in"$@"
do
case$option in
-r) dir_op="-r"
;;
-i) lu_op="-i"
;;
*) if [-n"$option" ]; then
echo"invalid option"
exit 1
fi
;;
esac
done
grep_str_of_file()
{
file=$1
str=$2
out=$(grep-n$lu_op"$str""$file")
if [-n"$out"-a"$file"!="$0" ]; then
echo"$file:$out"
fi
}
find_str()
{
if [-d"$1" ]; then
for file in$1/*
do
if ["$dir_op"="-r"-a-d"$file" ]; then
find_str$file$2
elif [-f"$file" ]; then
grep_str_of_file$file$2
fi
done
elif [-f"$1" ]; then
grep_str_of_file$1$2
fi
}
使用方法
复制代码代码如下:
$ find_str$path$name