为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 查找当前目录下包含特定字符串的特殊后缀名的文件.doc

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

2018-11-12 14页 doc 34KB 19阅读

用户头像

is_358746

暂无简介

举报
查找当前目录下包含特定字符串的特殊后缀名的文件.doc查找当前目录下包含特定字符串的特殊后缀名的文件.doc 查找当前目录下包含特定字符串的特殊后缀名的文件 如: 在当前目录下查找包含 hello 字符串的 后缀名为 .c 的文件: find . -name "*.c" | xargs grep -H "hello" 附:(转) 1. Grep简介 Grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把...
查找当前目录下包含特定字符串的特殊后缀名的文件.doc
查找当前目录下包含特定字符串的特殊后缀名的文件.doc 查找当前目录下包含特定字符串的特殊后缀名的文件 如: 在当前目录下查找包含 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。eGrep和fGrep的命令只跟Grep有很小不同。eGrep是Grep的扩展,支持更多的re元字符, fGrep就是 fixed Grep或fast Grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面意义,不再特殊。linux 使用GNU版本的Grep。它功能更强,可以通过-G、-E、-F命令行选项来使用eGrep和fGrep的功能。 Grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到屏幕,不影响原文件内容。 Grep可用于shell脚本,因为Grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2。我们利用这些返回值就可进行一些自动化的文本处理工作。 2. Grep正则表达式元字符集(基本集) 锚定行的开始 如:'^Grep'匹配所有以Grep开头的行。 $ 锚定行的结束 如:'Grep$'匹配所有以Grep结尾的行。 匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。 * 匹配零个或多个先前字符 如:'*Grep'匹配所有一个或多个空格后紧跟Grep的行。 .*一起用代表任意字符。 [] 匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和Grep。 [^] 匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含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 匹配文字和数字字符,也就是[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 () 分组符号,如:love(able|rs)ov+匹配loveable或lovers,匹配一个或多个ov。 x{m},x{m,},x{m,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:] 文字字符 [: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 从文件中提取模板。空文件中包含0个模板,所以什么都不匹配。 -h,--no-filename 当搜索多个文件时,不显示匹配文件名前缀。 -i,--ignore-case 忽略大小写差别。 -q,--quiet 取消显示,只返回退出状态。0则表示找到了匹配的行。 -l,--files-with-matches 打印匹配模板的文件清单。 --files-without-match -L, 打印不匹配模板的文件清单。 -n,--line-number 在匹配的行前面打印行号。 -s,--silent 不显示关于不存在或者无法读取文件的错误信息。 -v,--revert-match 反检索,只显示不匹配的行。 -w,--word-regexp 如果被/ <和/>引用,就把表达式做为一个单词搜索。 -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 '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 一些也可以实现,但是通过管道 | 比单纯用grep 复杂的参数更有效率。 2. xargs是用来展开find获得的结果,使其作为grep的参数。 ============================================= 使用grep搜索文件内容——快捷、方便 (1) 在当前目录下的所有文件的文件内容中查找哪个文件的内容中有findcontents(大小写不敏感,列出findcontents所在文件的所在行)——适合于当前目录下的文件及目录数目比较少,如果查找后列出内容过多,将会失去查找意义。 grep -rin findcontents * (2) 如果查找后列出内容过多,就需要用如下命令(只列出findcontents在所在文件的出现次数): grep -ric findcontents * | 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 PATTERN, --regexp=PATTERN Use PATTERN as the pattern; useful to protect patterns beginning with -. 注:有c的时候n将失效 ========================================== grep、fgrep和egrep命令 这组命令以指定模式搜索文件,并通知用户在什么文件中搜索到与指定的模式匹配的字符串,并打印出所有包含该字符串的文本行,在该文本行的最前面是该行所在的文件名。grep命令一次只能搜索一个指定的模式;egrep命令检索扩展的正则表达式(包括表达式组和可选项);fgrep命令检索固定字符串,它不识别正则表达式,是快速搜索命令。 这组命令在搜索与定位文件中特定的主题方面非常有用。要搜索的模式可以被认为是一些关键词,您可以用它们来搜索文件中包含的这些关键词。编写程序时,可以用它来寻找某一个函数,或是相关的词组。grep命令的搜索功能比fgrep强大,因为grep命令的搜索模式可以是正则表达式,而fgrep却不能。有关正则表达式请参见shell一章。 该组命令中的每一个命令都有一组选项,利用这些选项可以改变其输出方式。例如,可以在搜索到的文本行上加入行号,或者只输出文本行的行号,或者输出所有与搜索模式不匹配的文本行,或只简单地输出已搜索到指定模式的文件名,并且可以指定在查找模式时忽略大小写。 这组命令在指定的输入文件中查找与模式匹配的行。如果没有指定文件,则从输入中读取。正常情况下,每个匹配的行被显示到标准输出。如果要查找的文件是多个,则在每一行输出之前加上文件名。 语法: grep ,选项, ,查找模式, ,文件名1,文件名2,……, egrep ,选项, ,查找模式, ,文件名1,文件名2,……, fgrep ,选项, ,查找模式, ,文件名1,文件名2,……, 这组命令各选项的含义为: - E 每个模式作为一个扩展的正则表达式对待。 - F 每个模式作为一组固定字符串对待(以新行分隔),而不作为正则表达式。 - b在输出的每一行前显示包含匹配字符串的行在文件中的字节偏移量。 - c 只显示匹配行的数量。 - i 比较时不区分大小写。 - h 在查找多个文件时,指示grep不要将文件名加入到输出之前。 - l 显示首次匹配串所在的文件名并用换行符将其隔开。当在某文件中多次出现匹配串时,不重复显示此文件名。 - n 在输出前加上匹配串所在行的行号(文件首行行号为1)。 - v 只显示不包含匹配串的行。 - x 只显示整行严格匹配的行。 - e expression 指定检索使用的模式。用于防止以“-”开头的模式被解释为命令选项。 - f expfile 从expfile文件中获取要搜索的模式,一个模式占一行。 对该组命令的使用还需注意以下方面: 在命令后键入搜索的模式,再键入要搜索的文件。其中,文件名列表中也可以使用特殊字符,如“*”等,用来生成文件名列表。如果想在搜索的模式中包含有空格的字符串,可以用单引号把要搜索的模式括起来,用来表明搜索的模式是由包含空格的字符串组成。否则,Shell将把空格认为是命令行参数的定界符,而 grep命令将把搜索模式中的单词解释为文件名列表中的一部分。在下面的例子中,grep命令在文件example中搜索模式“text file”。 $ grep ?text file? example 用户可以在命令行上用Shell特殊字符来生成将要搜索的文件名列表。在下面的例子中,特殊字符“*”用来生成一个文件名列表,该列表包含当前目录下所有的文件。该命令将搜索出当前目录下所有文件中与模式匹配的行。 $ grep data * 特殊字符在搜索一组指定的文件时非常有用。例如,如果想搜索所有的C程序源文件中特定的模式,您可以用“*.c”来指定文件名列表。假设用户的 C程序中包含一些不必要的转向语句(goto语句),想要找到这些语句,可以用如下的命令来搜索并显示所有包含goto语句的代码行: $ grep goto *.c 用户可以在命令行上键入搜索模式,也可以使用-f选项从指定文件中读取要搜索的模式。在文件中,每个搜索模式占一行。如果经常要搜索一组常见字符串时,这个功能非常有用。在下面的例子中,用户要在文件exam中搜索字符串“editor”和“create”,就把要搜索的模式放置在文件mypats 中,然后,grep命令从文件mypats中读取要搜索的模式。 $ cat mypats editor create $ grep -f mypats exam 文件查找命令 find命令 功能:在目录结构中搜索文件,并执行指定的操作。此命令提供了相当多的查找条件,功能很强大。 语法:find 起始目录 寻找条件 操作 说明:find命令从指定的起始目录开始,递归地搜索其各个子目录,查找满足寻找条件的文件并对之采取相关的操作。 该命令提供的寻找条件可以是一个用逻辑运算符not、and、or组成的复合条件。逻辑运算符and、or、not的含义为: (1)and:逻辑与,在命令中用“-a”表示,是系统缺省的选项,表示只有当所给的条件都满足时,寻找条件才算满足。例如: $ find ????ame ?tmp? ????type c -user ?inin? 该命令寻找三个给定条件都满足的所有文件。 (2)or:逻辑或,在命令中用“-o”表示。该运算符表示只要所给的条件中有一个满足时,寻找条件就算满足。例如: $ find ????ame ?tmp? ???? ????ame ?mina*? 该命令查询文件名为?tmp?或是匹配?mina*?的所有文件。 not:逻辑非,在命令中用“~”表示。该运算符表示查找不满足所给条件的(3) 文件。例如: $ find ! ????ame ?tmp? 该命令查询文件名不是?tmp?的所有文件。 需要说明的是:当使用很多的逻辑选项时,可以用括号把这些选项括起来。为了避免Shell本身对括号引起误解,在话号前需要加转义字符“”来去除括号的意义。 例:$ find (????ame ?tmp? ????type c -user ?inin? ) 寻找条件有以下选项: 首先,下列各个选项中的n值可以有三种输入方式,假设n为20,则: +20 表示20以后(21,22,23等) -20 表示20以前(19,18,17等) 20 表示正好是20 1. 以名称和文件属性查找。 - name ?字串? 查找文件名匹配所给字串的所有文件,字串内可用通配符*、?、, ,。 - lname ?字串? 查找文件名匹配所给字串的所有符号链接文件,字串内可用通配符*、?、, ,。 -gid n 查找属于ID号为n的用户组的所有文件。 -uid n 查找属于ID号为n的用户的所有文件。 -group ?字串? 查找属于用户组名为所给字串的所有的文件。 -user ?字串? 查找属于用户名为所给字串的所有的文件。 -empty 查找大小为0的目录或文件。 -path ?字串? 查找路径名匹配所给字串的所有文件,字串内可用通配符*、?、, ,。 -perm 权限 查找具有指定权限的文件和目录,权限的表示可以如711,644。 -size n,bckw, 查找指定文件大小的文件,n后面的字符表示单位,缺省为b,代表512字节的块。 -type x 查找类型为x的文件,x为下列字符之一: b 块设备文件 c 字符设备文件 d 目录文件 p 命名管道(FIFO) f 普通文件 l 符号链接文件(symbolic links) s socket文件 -xtype x 与-type基本相同,但只查找符号链接文件。 2. 以时间为条件查找 - amin n 查找n分钟以前被访问过的所有文件。 - atime n 查找n天以前被访问过的所有文件。 - cmin n 查找n分钟以前文件状态被修改过的所有文件。 - ctime n 查找n天以前文件状态被修改过的所有文件。 - mmin n 查找n分钟以前文件内容被修改过的所有文件。 - mtime n 查找n天以前文件内容被修改过的所有文件。 3. 可执行的操作 - exec 命令名称 {} 对符合条件的文件执行所给的Linux 命令,而不询问用户是否需要执行该命令。{}表示命令的参数即为所找到的文件;命令的末尾必须以“ ;”结束。 - ok 命令名称 { } 对符合条件的文件执行所给的Linux 命令,与exec不同的是,它会询问用户是否需要执行该命令。 - ls 详细列出所找到的所有文件。 - fprintf 文件名 将找到的文件名写入指定文件。 - print 在标准输出设备上显示查找出的文件名。 - printf 格式 格式的写法请参考有关C语言的书。 例1:查找当前目录中所有以main开头的文件,并显示这些文件的内容。 $ find . - name „main*? - exec more {} ; 例2:删除当前目录下所有一周之内没有被访问过的a .out或*.o文件。 $ find . (- name a.out - o - name „*.o?) > - atime +7 - exec rm {} ; 说明如下: 命令中的“.”表示当前目录,此时find将从当前目录开始,逐个在其子目录中查找满足后面指定条件的文件。(和)表示括号(),其中的“”称为转义符。之所以这样写是由于对Shell而言,(和)另有不同的含义,而不是这里的用于组合条件的用途。“- name a.out”是指要查找名为a.out的文件;“- name „*.o?”是指要查找所有名字以 .o结尾的文件。这两个- name之间的- o表示逻辑或(or),即查找名字为a.out或名字以 .o结尾的文件,find在当前目录及其子目录下找到这佯的文件之后,再进行判断,看其最后访问时间是否在7天以前(条件,atime +7),若是,则对该文件执行命令rm(- exec rm{ };)。其中{ }代表当前查到的符合条件的文件名,;则是语法所要求的。上述命令中第一行的最后一个是续行符。当命令太长而在一行写不下时,可输入一个,之后系统将显示一个>,指示 用户继续输入命令。 locate命令 locate命令用于查找文件,它比find命令的搜索速度快,它需要一个数据库,这个数据库由每天的例行工作(crontab)程序来建立。当我们建立好这个数据库后,就可以方便地来搜寻所需文件了。 该命令的一般形式为: locate 相关字 例如:查找相关字issue $ locate issue /etc/issue /etc/issue.net /usr/man/man5/issue.5 /usr/man/man5/issue.net.5
/
本文档为【查找当前目录下包含特定字符串的特殊后缀名的文件&#46;doc】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索