Linux中的find和grep命令

find

1.简介
  Linux下find命令在目录结构中搜索文件,并执行指定的操作。它提供了相当多的查找条件,它的选项也很多,需要进行详细了解。即使系统中含有网络文件系统(nfs),find命令在该文件系统中同样有效,只要具有相应的权限即可。
2.命令格式


find pathname -options [-print -exec -ok …]

  1. 命令功能
    用于在文件树种查找文件,并作出相应的处理
    4.基本参数说明
    pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
    -print: find命令将匹配的文件输出到标准输出。
    -exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为’command’ { } \;,注意{ }和\;之间的空格。
    -ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行
    5.实例说明

    • 查找所有”.h”文件
find /PATH -name "*.h"
  • 查找所有”.h”文件中的含有”helloworld”字符串的文件
find /PATH -name "*.h" -exec grep -in "helloworld" {} \;

find /PATH -name "*.h" | xargs grep -in "helloworld"
  • 查找所有”.h”和”.c”文件中的含有”helloworld”字符串的文件
find /PATH /( -name "*.h" -or -name "*.c" /) -exec grep -in "helloworld" {} \;
  • 查找非备份文件中的含有”helloworld”字符串的文件
find /PATH /( -not -name "*~" /) -exec grep -in "helloworld" {} \;

注:/PATH为查找路径,默认为当前路径。带-exec参数时必须以\;结尾,否则会提示“find: 遗漏“-exec”的参数”。

实例内容引自http://blog.csdn.net/cupidove/article/details/8767450,
另外,对上述命令中进行一些说明:
    -name 按照文件名查找文件。
   -user 按照文件属主来查找文件。
   -group 按照文件所属的组来查找文件
接下来详细说明grep和exec命令的作用。

grep

1.简介
  Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.
2.参数说明  
[options]主要参数:
-c:只输出匹配行的计数。
-I:不区分大 小写(只适用于单字符)。
-h:查询多文件时不显示文件名。
-l:查询多文件时只输出包含匹配字符的文件名。
-n:显示匹配行及 行号。
-s:不显示不存在或无匹配文本的错误信息。
-v:显示不包含匹配文本的所有行。
pattern正则表达式主要参数:
\: 忽略正则表达式中特殊字符的原有含义。
^:匹配正则表达式的开始行。
$: 匹配正则表达式的结束行。
\<:从匹配正则表达 式的行开始。
>:到匹配正则表达式的行结束。
[ ]:单个字符,如[A]即A符合要求 。
[ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。
。:所有的单个字符。
* :有字符,长度可以为0。
3.实例说明

$ grep ‘test’ d*

显示所有以d开头的文件中包含 test的行。

$ grep ‘test’ aa bb cc

显示在aa,bb,cc文件中匹配test的行。

$ grep[a-z]\{5\}aa

显示所有包含每个字符串至少有5个连续小写字符的字符串的行

grep -i pattern files :不区分大小写地搜索。默认情况区分大小写,
grep -l pattern files :只列出匹配的文件名,
grep -L pattern files :列出不匹配的文件名,
grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配’magic’,而不是’magical’),

上述grep的内容大部分摘自
http://www.cnblogs.com/end/archive/2012/02/21/2360965.html

exec

  exec 一般配合find命令进行操作,将对find找到的文件进行处理。
  -exec 参数后面跟的是command命令,它的终止是以;为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。
  {} 花括号代表前面find查找出来的文件名。
  

你可能感兴趣的:(linux)