`

[Linux命令]文件内容查询命令

阅读更多
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 –name ’tmp’ –xtype c -user ’inin’
 
 
  该命令寻找三个给定条件都满足的所有文件。
 
 
  (2)or:逻辑或,在命令中用“-o”表示。该运算符表示只要所给的条件中有一个满足时,寻找条件就算满足。例如:
 
 
  $ find –name ’tmp’ –o –name ’mina*’
 
  该命令查询文件名为’tmp’或是匹配’mina*’的所有文件。
 
 
  (3)not:逻辑非,在命令中用“!”表示。该运算符表示查找不满足所给条件的文件。例如:
 
 
  $ find ! –name ’tmp’
 
 
  该命令查询文件名不是’tmp’的所有文件。
 
 
  需要说明的是:当使用很多的逻辑选项时,可以用括号把这些选项括起来。为了避免Shell本身对括号引起误解,在话号前需要加转义字符“”来去除括号的意义。
 
 
  例:$ find (–name ’tmp’ –xtype 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
分享到:
评论

相关推荐

    Linux查看文件内容命令.pdf

    Linux 查看文件内容命令 Linux 查看文件内容命令是 Linux 系统中最常用的命令之一。它能够帮助用户查看文件的内容,了解文件的结构和内容。在 Linux 系统中,有多种查看文件内容的命令,每种命令都有其特点和使用...

    linux 不删除文件,清空文件中内容的命令

    在Linux操作系统中,有时我们需要清除文件的内容,...了解这些基本的Linux命令对于日常的系统管理和维护工作非常重要。在处理文件和用户时,请确保谨慎操作,避免误删重要数据。同时,定期备份是保护数据安全的好习惯。

    Linux常用文件命令

    "Linux常用文件命令" Linux操作系统中,文件命令是非常重要的一部分,掌握这些命令可以更好地操作和管理文件系统。本节将详细介绍Linux常用的文件命令,包括文件系统结构、文件类型、目录操作、文件操作等方面。 ...

    Linux命令查询全集 chm

    这个名为"Linux命令查询全集 chm"的资源,正是为帮助用户学习和查询Linux命令提供的一份全面指南。 首先,让我们来看看文件管理方面的命令。在Linux中,`ls`用于列出目录内容,`cd`用于切换当前工作目录,`mkdir`...

    Linux常用配置文件及常用命令

    Linux常用配置文件及常用命令 Linux是一个功能强大且灵活的操作系统,它提供了许多配置文件和命令来帮助用户管理和维护系统。在本节中,我们将介绍一些常用的Linux配置文件和命令,帮助用户更好地理解和掌握Linux...

    Linux api 命令快速查询集合(chm文件)

    这个集合包含三个CHM(Compiled Help Manual)文件,分别涵盖Linux命令、Linux API(针对C语言)以及Ubuntu命令。CHM文件是一种微软开发的帮助文档格式,可以离线浏览,方便快捷。 首先,我们来详细了解一下Linux...

    Linux命令大全CHM,支持查询

    "Linux命令大全"CHM文件中的查询功能使得用户可以通过关键词快速找到需要的命令和相关信息,这对于初学者和经验丰富的用户来说都是非常实用的工具。通过深入学习和实践这些命令,用户可以更加熟练地驾驭Linux系统,...

    Linux命令大全手册 550多个 Linux命令,内容包含 Linux命令手册、详解、学习,值得收藏的Linux命令速查手册。

    Linux命令大全手册是一份极其宝贵的资源,包含了超过550个不同的Linux命令,涵盖了从基本操作到高级系统管理的所有方面。这份手册不仅是初学者的入门指南,也是经验丰富的Linux用户日常工作中不可或缺的参考资料。 ...

    Linux命令大全完整版.pdf

    本文将详细解读《Linux命令大全完整版.pdf》中所收录的各类命令,以帮助读者更好地理解和运用Linux命令。 1. Linux系统管理命令 系统管理命令是Linux系统中最重要的命令类别之一,涵盖了用户管理、进程控制、系统...

    linux文件系统及文件操作命令

    Linux 文件系统及文件操作命令 Linux 文件系统是指 Linux 操作系统中用于存储和管理文件的系统。它提供了一个层次结构化的文件系统,允许用户存储、管理和访问文件。Linux 文件系统由多个目录组成,每个目录可以...

    linux命令学习chm文件

    本资源包提供了四份关于Linux命令学习的CHM(Microsoft帮助文件)文档,分别是"大学生攻克Linux系统教程(又名天下没有难学的Linux)"、"Linux基础命令教程豪华版"、"Linux常用命令全集"以及"Linux命令大全"。...

    linux-Linux命令大全内容包含Linux命令手册详解学习搜集

    本资源"Linux命令大全"包含了516个Linux命令的详细资料,对于学习和理解Linux操作系统至关重要。下面,我们将深入探讨这个资源中涉及的一些关键知识点。 1. **命令手册**: - 在Linux世界中,命令手册(man pages...

    Linux常用命令.pdf

    以下是对PDF文件中提到的一些常用Linux命令的详细解释。 **ls命令**: 1. **命令格式**:`ls [选项] [文件或目录]` 2. **命令功能**:用于列出当前目录下的文件和子目录。不加任何参数时,它会显示所有非隐藏文件和...

    实验85-Linux命令:文件操作命令1

    在Linux操作系统中,掌握基础的文件操作命令对于日常的系统管理和运维工作至关重要。本实验重点介绍了三个常用的文件操作命令:`touch`、`cat`和`more`,旨在帮助用户熟练掌握这些命令的使用方法。 首先,我们来看`...

    Linux文件压缩命令

    本篇文章将详细讲解Linux中的几种主要文件压缩命令,包括`bzip2`、`gzip`、`zcat`、`znew`、`tar`和`ar`以及`cpio`。 首先,我们来了解`gzip`命令。它是Linux中最常用的压缩工具,使用广泛且支持高效率的压缩。`...

    linux命令 chm格式文档

    Linux命令是Linux操作系统中进行系统管理、文件操作和任务执行的基本工具。`chm`格式文档是一种Microsoft编译的帮助文件,通常包含丰富的信息和索引,便于查阅。在这个`Linux命令大全(修改版).chm`文件中,我们可以...

    Linux命令壁纸带中文.rar

    Linux命令是操作系统的精髓,通过命令行界面(CLI)可以高效地执行各种任务,如文件管理、系统维护、网络操作等。以下是一些关键的Linux命令及其用途: 1. **ls**:列出目录内容,常用选项 `-l` 可以显示详细信息,...

    Linux常用命令教学视频

    04.1.1 Linux常用命令-文件处理命令-命令格式与目录处理命令ls.mp4 04.1.2 Linux常用命令-文件处理命令-目录处理命令.mp4 04.1.3 Linux常用命令-文件处理命令-文件处理命令.mp4 04.1.4 Linux常用命令-文件处理...

    Linux 命令速查手册

    资料查询命令包括了对文件内容进行检索和处理的命令,如cat、more、less、grep、find等。这些命令可以帮助用户在海量信息中迅速找到所需的资料,比如通过管道和过滤器组合命令来实现复杂的文本处理。 系统管理命令...

    linux命令手册.pdf

    以上只是Linux命令手册中的一部分内容,实际上,手册还包括更多的系统管理命令,如文件和目录操作(如`ls`, `cd`, `mv`, `rm`等),文件权限和所有权(`chmod`, `chown`, `chgrp`),网络管理(`ifconfig`, `ping`, ...

Global site tag (gtag.js) - Google Analytics