如何使用grep命令实现下面案例find grep 查找文件内容?

在使用linux时,经常还要进行文件查找。其中查找的命令主要有find和grep。两个命令是有区的。区别:(1)find命令是按照文件的属性进行查找,如文件名,文件大小,所有者shell查找文件内容,所属组,是否为空,访问时间,修改时间等。(2)grep是按照文件的内容进行查找,会对文件的每一行按照给定的方式(patter)进行匹配查找。一.find命令基本格式:find path expression1.按照文件名查找(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:字节shell查找文件内容,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 expression1.主要参数[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’),详细使用参看:本文来自电脑杂谈,转载请注明本文网址:http://www.pc-fly.com/a/jisuanjixue/article-121566-1.html
}
你曾经遇到过在文件中查找特定字符串或模式的任务,但是不知道从哪里开始查找?那么,这里是grep来救援!12 Grep命令示例grep是配备在Linux上的每一个分布的功能强大的文件搜索模式。 如果出于某种原因,这是不是你的系统上安装,你可以很容易地通过它你的包管理器进行安装(在Debian / Ubuntu的 apt-get和Yum在RHEL / CentOS的 / Fedora的 )。$ sudo apt-get install grep #Debian/Ubuntu$ sudo yum install grep #RHEL/CentOS/Fedora我发现,让你的脚湿使用grep最简单方法是在短短的潜水权,并使用一些真实的例子。1.搜索和查找文件比方说,您刚刚安装新的Ubuntu的新副本你的机器上,那你要给Python脚本的一个镜头。 你一直在网上淘找教程,但你看到有使用两个不同版本的Python,而你不知道哪一个是由Ubuntu的安装程序安装到系统上,或者如果它安装的模块。只需运行此命令:# dpkg –l
grep –i python示例输出ii python2.7 2.7.3-0ubuntu3.4 Interactive high-level object-oriented language (version 2.7)ii python2.7-minimal 2.7.3-0ubuntu3.4 Minimal subset of the Python language (version 2.7)ii python-openssl 0.12-1ubuntu2.1 Python wrapper around the OpenSSL libraryii python-pam 0.4.2-12.2ubuntu4 A Python interface to the PAM library首先,我们跑的dpkg -l,其中列出了在系统上安装* .deb软件包。 第二,我们的管道输出到grep -ipython,它简单状态“去grep和过滤掉,并返回在它的Python的一切。”-i选项有忽略大小写,以及grep是区分大小写。 使用-i选项进入,除非你当然想明确更具体的搜索的好习惯。2.搜索和过滤文件grep也可以用来搜索和单个文件或多个文件中进行筛选。让我们来看这个场景:您遇到一些麻烦你的Apache Web服务器 ,并且您已经接触了在网络上寻求一些帮助许多真棒论坛之一。 那种灵魂谁回复你要求你发布你的/ etc / apache2的/网站的可用/默认SSL文件的内容。你会不会更容易,那个帮助你的家伙,以及每个人阅读它,如果你可以删除所有的注释行?你可以!只需运行:# grep –v “#” /etc/apache2/sites-available/default-ssl-v选项告诉grep来反转它的输出,这意味着,而不是打印匹配行,却反其道而行之,并打印所有不匹配的表达,在这种情况下的线条时,#注释行。3.仅查找所有.mp3文件grep可以是用于从标准输出滤波非常有用的。 例如,假设您有一个完整的文件夹充满了一堆不同格式的音乐文件。 你想找到所有从艺术家JayZ的* .mp3文件,但你不希望任何的混音曲目。 使用find命令与一对夫妇的grep管道将这样的伎俩:# find . –name “*.mp3”
grep –i JayZ
grep –vi “remix”在这个例子中,我们使用的是发现打印的所有文件以* .MP3扩展 ,管道就到grep -i筛选出并打印名为“JayZ”,然后另一条管道的所有文件,这些文件过滤到grep -VI出,并且不与串(在任何情况下)“ 混音 ”打印所有的文件名。4.显示搜索字符串之前或之后的行数选项另一对夫妇是-A和-B开关,显示线的匹配线和数目,要么来之前或搜索字符串之后。 虽然手册页提供了更详细的解释,我觉得最容易记住的选项-A = 后 ,和-B 之前 =:# ifconfig
grep –A 4 eth0# ifconfig
grep -B 2 UP5.打印匹配周围的线数grep 的-c选项相似,但不是打印的前或后的字符串来的线条,它打印在任一方向的线路:# ifconfig
grep –C 2 lo6.计数匹配数类似管道grep命令字符串字数(WC程序)的grep 内置选项可以执行同样的话:# ifconfig
grep –c inet67.按给定字符串搜索文件在编译错误调试文件时grep-n选项是非常有用的。它在给定搜索字符串的文件中显示行号:# grep –n “main” setup..py8.在所有目录中递归搜索字符串如果您想寻找与所有子目录沿当前目录的字符串,可以指定-r选项递归搜索:# grep –r “function” *9.搜索整个花样通过-w选项对grep是字符串中的整个模式的搜索。例如,使用:# ifconfig
grep –w “RUNNING”将在引号中打印包含模式的行。另一方面,如果你尝试:# ifconfig
grep –w “RUN”不会返回任何内容,因为我们不是搜索模式,而是整个单词。10.在Gzipped文件中搜索字符串值得一提的是grep 派生。首先是zgrep,其中,类似ZCAT,是压缩文件上调用使用。 它采用相同的选项grep和以同样的方式使用:# zgrep –i error /var/log/syslog.2.gz11.匹配文件中的正则表达式该egrep是另一种衍生的意思是“ 扩展全局正则表达式 ”。 它可以识别更多的表达元字符在这种+?
和()。-E选项调用。# grep –E12.搜索固定模式字符串的比fgrep搜索一个或多个文件的列表的固定模式串。 它是一样的grep -F。 使用fgrep一样的一个常用方法是模式的文件传递给它:# fgrep –f file_full_of_patterns.txt file_to_search.txt这仅仅是一个起点使用grep,但你可能能够看到,它是无价的多种用途。 除了我们已经实现了简单的行命令中,grep可以用来编写功能强大的cron作业,和强大的shell脚本 ,对于一个开始。手册页的选项,并拿出服务于自己的目的grep表达式!}

我要回帖

更多关于 find grep 查找文件内容 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信