查找当前目录下包含特定字符串的特殊后缀名的文件

上传人:wt****50 文档编号:40143222 上传时间:2018-05-24 格式:DOC 页数:11 大小:46.50KB
返回 下载 相关 举报
查找当前目录下包含特定字符串的特殊后缀名的文件_第1页
第1页 / 共11页
查找当前目录下包含特定字符串的特殊后缀名的文件_第2页
第2页 / 共11页
查找当前目录下包含特定字符串的特殊后缀名的文件_第3页
第3页 / 共11页
查找当前目录下包含特定字符串的特殊后缀名的文件_第4页
第4页 / 共11页
查找当前目录下包含特定字符串的特殊后缀名的文件_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《查找当前目录下包含特定字符串的特殊后缀名的文件》由会员分享,可在线阅读,更多相关《查找当前目录下包含特定字符串的特殊后缀名的文件(11页珍藏版)》请在金锄头文库上搜索。

1、查找当前目录下包含特定字符串的特殊后缀名的文件查找当前目录下包含特定字符串的特殊后缀名的文件如:在当前目录下查找包含 hello 字符串的 后缀名为 .c 的文件:find . -name “*.c“ | xargs grep -H “hello“附附:(转转)1. Grep 简介Grep (global search regular expression(RE) and print out the line,全面搜索正 则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜 索文本,并把匹配的行打印出来。Unix 的 Grep 家族包括 Grep、 eGrep 和 fGrep

2、。eGrep 和 fGrep 的命令只跟 Grep 有很小不同。eGrep 是 Grep 的扩展, 支持更多的 re 元字符, fGrep 就是 fixed Grep 或 fast Grep,它们把所有的字 母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面意义, 不再特殊。linux 使用 GNU 版本的 Grep。它功能更强,可以通过-G、-E、-F 命令行选项来使用 eGrep 和 fGrep 的功能。Grep 的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板 包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被 送到屏幕,不影响原文件内容。G

3、rep 可用于 shell 脚本,因为 Grep 通过返回一个状态值来说明搜索的状态, 如果模板搜索成功,则返回 0,如果搜索不成功,则返回 1,如果搜索的文件 不存在,则返回 2。我们利用这些返回值就可进行一些自动化的文本处理工作。2. Grep 正则表达式元字符集(基本集)锚定行的开始 如:Grep匹配所有以 Grep 开头的行。$锚定行的结束 如:Grep$匹配所有以 Grep 结尾的行。匹配一个非换行符的字符 如:gr.p匹配 gr 后接一个任意字符,然后是 p。*匹配零个或多个先前字符 如:*Grep匹配所有一个或多个空格后紧跟 Grep 的 行。 .*一起用代表任意字符。匹配一个指

4、定范围内的字符,如Ggrep匹配 Grep 和 Grep。匹配一个不在指定范围内的字符,如:A-FH-Zrep匹配不包含 A-R 和 T-Z 的 一个字母开头,紧跟 rep 的行。/(./)标记匹配字符,如/(love/),love 被标记为 1。/ 锚定单词的结束,如Grep/ 匹配包含以 Grep 结尾的单词的行。x/m/重复字符 x,m 次,如:0/5/匹配包含 5 个 o 的行。x/m,/重复字符 x,至少 m 次,如:o/5,/匹配至少有 5 个 o 的行。x/m,n/重复字符 x,至少 m 次,不多于 n 次,如:o/5,10/匹配 5-10 个 o 的行。/w匹配文字和数字字符,

5、也就是A-Za-z0-9,如:G/w*p匹配以 G 后跟零个或多 个文字或数字字符,然后是 p。/W/w 的反置形式,匹配一个或多个非单词字符,如点号句号等。/b单词锁定符,如: /bGrepb/只匹配 Grep。 3. 用于 eGrep 和 Grep -E 的元字符扩展集+匹配一个或多个先前的字符。如:a-z+able,匹配一个或多个小写字母后跟 able 的串,如 loveable,enable,disable 等。?匹配零个或多个先前的字符。如:gr?p匹配 gr 后跟一个或没有字符,然后是 p 的行。a|b|c匹配 a 或 b 或 c。如:Grep|sed 匹配 Grep 或 sed(

6、)分组符号,如:love(able|rs)ov+匹配 loveable 或 lovers,匹配一个或多个 ov。xm,xm,xm,n作用同 x/m/,x/m,/,x/m,n/4. POSIX 字符类为了在不同国家的字符编码中保持一至,POSIX(The Portable Operating System Interface)增加了特殊的字符类,如:alnum:是 A-Za-z0-9 的另一个写 法。要把它们放到号内才能成为正则表达式,如A- Za-z0-9或: alnum:。在 linux 下的 Grep 除 fGrep 外,都支持 POSIX 的字符类。:alnum:文字数字字符:alpha

7、:文字字符:digit:数字字符:graph:非空字符(非空格、控制字符):lower:小写字符:cntrl:控制字符:print:非空字符(包括空格):punct:标点符号:space:所有空白字符(新行,空格,制表符):upper:大写字符:xdigit:十六进制数字(0-9,a-f,A-F)5. Grep 命令选项-?同时显示匹配行上下的?行,如:Grep -2 pattern filename 同时显示匹配行的 上下 2 行。-b,-byte-offset打印匹配行前面打印该行所在的块号码。-c,-count只打印匹配的行数,不显示匹配的内容。 -f File,-file=File从文

8、件中提取模板。空文件中包含 0 个模板,所以什么都不匹配。-h,-no-filename当搜索多个文件时,不显示匹配文件名前缀。-i,-ignore-case忽略大小写差别。-q,-quiet取消显示,只返回退出状态。0 则表示找到了匹配的行。-l,-files-with-matches打印匹配模板的文件清单。-L,-files-without-match打印不匹配模板的文件清单。-n,-line-number在匹配的行前面打印行号。-s,-silent不显示关于不存在或者无法读取文件的错误信息。-v,-revert-match反检索,只显示不匹配的行。-w,-word-regexp如果被/

9、引用,就把表达式做为一个单词搜索。-V,-version显示软件版本信息。6. 实例要用好 Grep 这个工具,其实就是要写好正则表达式,所以这里不对 Grep 的所 有功能进行实例讲解,只列几个例子,讲解一个正则表达式的写法。$ ls -l | Grep a通过管道过滤 ls -l 输出的内容,只显示以 a 开头的行。$ Grep test d*显示所有以 d 开头的文件中包含 test 的行。$ Grep test aa bb cc显示在 aa,bb,cc 文件中匹配 test 的行。$ Grep a-z/5/ aa显示所有包含每个字符串至少有 5 个连续小写字符的字符串的行。$ Grep

10、 w/(es/)t.*/1 aa如果 west 被匹配,则 es 就被存储到内存中,并标记为 1,然后搜索任意个字 符(.*),这些字符后面紧跟着另外一个 es(/1),找到就显示该行。如果用 eGrep 或 Grep -E,就不用 “/“号进行转义,直接写成w(es)t.*/1就可以了。 = 查找 当前目录下包含 alias 字符串的*.conf 的文件find . -name “*.conf“ | xargs grep -H “alias“ find . -name “*.conf“ -exec grep -H “alias“ /;1. grep -R -l 一些也可以实现,但是通过管道

11、| 比单纯用 grep 复杂的参数更 有效率。 2. xargs 是用来展开 find 获得的结果,使其作为 grep 的参数。= 使用 grep 搜索文件内容快捷、方便(1) 在当前目录下的所有文件的文件内容中查找哪个文件的内容中有 findcontents(大小写不敏感,列出 findcontents 所在文件的所在行)适合 于当前目录下的文件及目录数目比较少,如果查找后列出内容过多,将会失去查找意义。 grep -rin findcontents *(2) 如果查找后列出内容过多,就需要用如下命令(只列出 findcontents 在所 在文件的出现次数): grep -ric find

12、contents * | grep -v :0(3) 如果根本不知道文件所在目录,就需要在根目录下进行查找(查找整个硬盘 空间),但是由于根目录下某些文件(bin、sbin、boot、dev、initrd、lib)没有查 找价值,因而要将其排除在查找范围之外 # cd / grep -rin findcontents ls | grep -vE bin|boot|dev|initrd|lib-i, -ignore-case -n, -line-number -c, -count -r, -recursive -v, -invert-match -E, -extended-regexp -e P

13、ATTERN, -regexp=PATTERN Use PATTERN as the pattern; useful to protect patterns beginning with -. 注:有 c 的时候 n 将失效= grep、fgrep 和 egrep 命令 这组命令以指定模式搜索文件,并通知用户在什么文件中搜索到与指定的模式 匹配的字符串,并打印出所有包含该字符串的文本行,在该文本行的最前面是 该行所在的文件名。grep 命令一次只能搜索一个指定的模式;egrep 命令检索 扩展的正则表达式(包括表达式组和可选项);fgrep 命令检索固定字符串,它 不识别正则表达式,是快速搜索

14、命令。 这组命令在搜索与定位文件中特定的主题方面非常有用。要搜索的模式可以被 认为是一些关键词,您可以用它们来搜索文件中包含的这些关键词。编写程序 时,可以用它来寻找某一个函数,或是相关的词组。grep 命令的搜索功能比 fgrep 强大,因为 grep 命令的搜索模式可以是正则表达式,而 fgrep 却不能。 有关正则表达式请参见 shell 一章。 该组命令中的每一个命令都有一组选项,利用这些选项可以改变其输出方式。 例如,可以在搜索到的文本行上加入行号,或者只输出文本行的行号,或者输 出所有与搜索模式不匹配的文本行,或只简单地输出已搜索到指定模式的文件 名,并且可以指定在查找模式时忽略大

15、小写。 这组命令在指定的输入文件中查找与模式匹配的行。如果没有指定文件,则从 标准输入中读取。正常情况下,每个匹配的行被显示到标准输出。如果要查找的文件是多个,则在每一行输出之前加上文件名。 语法: grep 选项 查找模式 文件名 1,文件名 2, egrep 选项 查找模式 文件名 1,文件名 2, fgrep 选项 查找模式 文件名 1,文件名 2, 这组命令各选项的含义为: - E 每个模式作为一个扩展的正则表达式对待。 - F 每个模式作为一组固定字符串对待(以新行分隔),而不作为正则表达式。- b 在输出的每一行前显示包含匹配字符串的行在文件中的字节偏移量。 - c 只显示匹配行的数量。 - i 比较时不区分大小写。 - h 在查找多个文件时,指示 grep 不要将文件名加入到输出之前。 - l 显示首次匹配串所在的文件名并用换行符将其隔开。当在某文件中多次出现 匹配串时,不重复显示此文件名。 - n 在输出前加上匹配串所在行的行号(文件首行行号为 1)。 - v 只显

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号