首页 > 代码库 > 10find

10find

基本框架:

a)         Find命令一般格式

b)         Find 常用表达式:条件表达式和操作表达式

c)         find逻辑表达式:与或非

 

10.1    find命令一般格式

           Find  pathname  –expressions

           特点:   1) find 对文件名进行查找,而grep是对文件内容进行查找

                    2)Find对树形目录层次结构递归搜索

                    3)当在shell环境下只输入find的话,默认的路径是当前路径,默认的操作表达式是-print

 

10.2    Find 常用表达式

        主要包括两种:条件表达式和操作表达式

1)条件表达式:

u  -name pattern(最常用)

        当文件名与pattern相同时,返回true,否则false

u  -type  t :搜索指定类型的文件

        文件类型可以是f(普通文件)、d(目录)、l(符号链接文件)

u  -user usr

        检查当前的文件的拥有者或UID是否是usr

u  -mtime

        -mtime -4  最近4天内修改的文件

        -mtime +4  4天前修改的文件

u  -size

        -size  +5k    大于5k的

        -size  -5k     小于5k的

       

        2)操作表达式:

u  -exec  cmd  {}  \;

u  -print   打印文件名

 

  例子:搜索当前目录下的所有文件名以txt结尾的文件,然后将其删除,并将其打印出来。

         Find .  –name  ‘*.txt’  –type  f  -exec  rm  –f  {}  \;  -print

说明:

  {}  表示搜索到的文件列表

\;  分号用来表示一个命令的结束,又因为;对shell来说是特殊的字符,所以要在;号前加上转义字符\

 

10.3    find逻辑表达式

        前面的条件表达式和操作表达式可以通过逻辑运算连接在一起。

u  e1  –a  e2    逻辑与运算,仅当e1为真时,对e2求值

u  e1  e2        同上

u  e1  –o  e2    逻辑或运算,仅当e1为假时,对e2求值

u  e1  ,  e2      逗号表达式,对两个表达式均求值,先e1,后e2

u  ! e1           逻辑非运算

 

10.4    Find示例

       1)将文件名以A/a打头或者以A/a结尾的文件给打印出来

          Find  .  –type  f  \(  -name ‘[Aa]*’  -o  –name  ‘*[Aa]’  \)  -print

 

2)统计etc目录下所有文件内容包含telnet的文件的个数,其中telnet 不区分大小写。

Find  /etc   -type  f  -exec  grep  –li  ‘telnet’  {}  \;  | wc  -l

解释:

l的作用:使grep只输出查找到的文件名。

一个文件名就代表一个文件,有多少个文件名就代表有多少个文件。