收藏 分享(赏)

linux 文件查找和内容过滤命令.docx

上传人:hwpkd79526 文档编号:7231545 上传时间:2019-05-10 格式:DOCX 页数:4 大小:18.96KB
下载 相关 举报
linux 文件查找和内容过滤命令.docx_第1页
第1页 / 共4页
linux 文件查找和内容过滤命令.docx_第2页
第2页 / 共4页
linux 文件查找和内容过滤命令.docx_第3页
第3页 / 共4页
linux 文件查找和内容过滤命令.docx_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

1、linux 文件查找和内容过滤命令linux 文件查找和内容过滤命令 grep、fgrep 和 egrep 命令这组命令以指定模式搜索文件,并通知用户在什么文件中搜索到与指定的模式匹配的字符串,并打印出所有包含该字符串的文本行,在该文本行的最前面是该行 所在的文件名。grep 命令一次只能搜索一个指定的模式;egrep 命令检索扩展的正则表达式(包括表达式组和可选项);fgrep 命令检索固定字符串, 它不识别正则表达式,是快速搜索命令。这组命令在搜索与定位文件中特定的主题方面非常有用。要搜索的模式可以被认为是一些关键词,您可以用它们来搜索文件中包含的这些关键词。编写程序时, 可以用它来寻找某

2、一个函数,或是相关的词组。grep 命令的搜索功能比 fgrep 强大,因为 grep 命令的搜索模式可以是正则表达式,而 fgrep 却不 能。有关正则表达式请参见 shell 一章。该组命令中的每一个命令都有一组选项,利用这些选项可以改变其输出方式。例如,可以在搜索到的文本行上加入行号,或者只输出文本行的行号,或者输出所 有与搜索模式不匹配的文本行,或只简单地输出已搜索到指定模式的文件名,并且可以指定在查找模式时忽略大小写。这组命令在指定的输入文件中查找与模式匹配的行。如果没有指定文件,则从标准输入中读取。正常情况下,每个匹配的行被显示到标准输出。如果要查找的文件是多个,则在每一行输出之前

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

4、显示此文件名。- n 在输出前加上匹配串所在行的行号(文件首行行号为 1)。- v 只显示不包含匹配串的行。- x 只显示整行严格匹配的行。- e expression 指定检索使用的模式。用于防止以“-”开头的模式被解释为命令选项。- f expfile 从 expfile 文件中获取要搜索的模式,一个模式占一行。对该组命令的使用还需注意以下方面:在命令后键入搜索的模式,再键入要搜索的文件。其中,文件名列表中也可以使用特殊字符,如“*”等,用来生成文件名列表。如果想在搜索的模式中包含有 空格的字符串,可以用单引号把要搜索的模式括起来,用来表明搜索的模式是由包含空格的字符串组成。否则,Shel

5、l 将把空格认为是命令行参数的定界符,而 grep 命令将把搜索模式中的单词解释为文件名列表中的一部分。在下面的例子中,grep 命令在文件 example 中搜索模式“text file”。$ grep text file example用户可以在命令行上用 Shell 特殊字符来生成将要搜索的文件名列表。在下面的例子中,特殊字符“*”用来生成一个文件名列表,该列表包含当前目录下所有的文件。该命令将搜索出当前目录下所有文件中与模式匹配的行。$ grep data *特殊字符在搜索一组指定的文件时非常有用。例如,如果想搜索所有的C 程序源文件中特定的模式,您可以用“*.c”来指定文件名列表。假

6、设用户的 C 程序中包含一些不必要的转向语句(goto 语句),想要找到这些语句,可以用如下的命令来搜索并显示所有包含 goto 语句的代码行:$ grep goto *.c用户可以在命令行上键入搜索模式,也可以使用-f 选项从指定文件中读取要搜索的模式。在文件中,每个搜索模式占一行。如果经常要搜索一组常见字符串 时,这个功能非常有用。在下面的例子中,用户要在文件 exam 中搜索字符串“editor”和“create”,就把要搜索的模式放置在文件 mypats 中,然后,grep 命令从文件 mypats 中读取要搜索的模式。$ cat mypatseditorcreate$ grep -f

7、 mypats exam文件查找命令find 命令功能:在目录结构中搜索文件,并执行指定的操作。此命令提供了相当多的查找条件,功能很强大。语法:find 起始目录 寻找条件 操作说明:find 命令从指定的起始目录开始,递归地搜索其各个子目录,查找满足寻找条件的文件并对之采取相关的操作。该命令提供的寻找条件可以是一个用逻辑运算符 not、and、or 组成的复合条件。逻辑运算符 and、or、not 的含义为:(1)and:逻辑与,在命令中用“-a”表示,是系统缺省的选项,表示只有当所给的条件都满足时,寻找条件才算满足。例如:$ find ?ame tmp ?type c -user inin

8、该命令寻找三个给定条件都满足的所有文件。(2)or:逻辑或,在命令中用“-o”表示。该运算符表示只要所给的条件中有一个满足时,寻找条件就算满足。例如:$ find ?ame tmp ? ?ame mina*该命令查询文件名为tmp或是匹配mina*的所有文件。(3)not:逻辑非,在命令中用“!”表示。该运算符表示查找不满足所给条件的文件。例如:$ find ! ?ame tmp该命令查询文件名不是tmp的所有文件。需要说明的是:当使用很多的逻辑选项时,可以用括号把这些选项括起来。为了避免 Shell 本身对括号引起误解,在话号前需要加转义字符“”来去除括号的意义。例:$ find (?ame

9、 tmp ?type c -user inin )寻找条件有以下选项:首先,下列各个选项中的 n 值可以有三种输入方式,假设 n 为 20,则:+20 表示 20 以后(21,22,23 等)-20 表示 20 以前(19,18,17 等)20 表示正好是 201. 以名称和文件属性查找。- name 字串 查找文件名匹配所给字串的所有文件,字串内可用通配符*、?、 。- lname 字串 查找文件名匹配所给字串的所有符号链接文件,字串内可用通配符*、?、 。-gid n 查找属于 ID 号为 n 的用户组的所有文件。-uid n 查找属于 ID 号为 n 的用户的所有文件。-group 字串

10、 查找属于用户组名为所给字串的所有的文件。-user 字串 查找属于用户名为所给字串的所有的文件。-empty 查找大小为 0 的目录或文件。-path 字串 查找路径名匹配所给字串的所有文件,字串内可用通配符*、?、 。-perm 权限 查找具有指定权限的文件和目录,权限的表示可以如711,644。-size nbckw 查找指定文件大小的文件,n 后面的字符表示单位,缺省为 b,代表 512 字节的块。-type x 查找类型为 x 的文件,x 为下列字符之一:b 块设备文件c 字符设备文件d 目录文件p 命名管道(FIFO)f 普通文件l 符号链接文件(symbolic links)s

11、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 命令,而不询问用户是否需要执行该命令。表示命令

12、的参数即为所找到的文件;命令的末尾必须以“ ;”结束。- ok 命令名称 对符合条件的文件执行所给的 Linux 命令,与 exec不同的是,它会询问用户是否需要执行该命令。- ls 详细列出所找到的所有文件。- fprintf 文件名 将找到的文件名写入指定文件。- print 在标准输出设备上显示查找出的文件名。- printf 格式 格式的写法请参考有关 C 语言的书。例 1:查找当前目录中所有以 main 开头的文件,并显示这些文件的内容。$ find . - name main* - exec more ;例 2:删除当前目录下所有一周之内没有被访问过的 a .out 或*.o 文件

13、。$ 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

14、 结尾的文件,find 在当前目录及其子目录下找到这佯的文件之后,再进行判断,看其最后访问时间是否在 7 天以前(条件atime +7),若是,则对该文件执行命令rm(- exec rm ;)。其中 代表当前查到的符合条件的文件名,;则是语法所要求的。上述命令中第一行的最后一个是续行符。当命令太长而在一行写不下时,可输入一个,之后系统将显示 一个,指示用户继续输入命令。locate 命令locate 命令用于查找文件,它比 find 命令的搜索速度快,它需要一个数据库,这个数据库由每天的例行工作(crontab)程序来建立。当我们建立好这个数据库后,就可以方便地来搜寻所需文件了。该命令的一般形式为:locate 相关字例如:查找相关字 issue$ locate issue/etc/issue/etc/

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报