文件查找命令

find
locate


find命令:
功能:在目录结构中搜索文件,并执行指定的操作
语法:find 起始目录 查找条件 [操作]
起始目录:find命令所查找的目录路径;例如可用.来表示当前目录,用/来表示系统根目录
查找条件:匹配机制,如可以按照文件名、文件权限、修改时间等进行文件查找
操作:按指定条件查找后进行的特定处理方法,如将查找到的文件在屏幕上显示出来,或对

其进行权限修改,或将查找到的文件删除等等

find查找条件的组合方法:
可以为find命令同时指定多个查找条件进行查找
指定多个条件的查找条件可以是一个用逻辑运算符not、and或or组成的复合条件
and 逻辑与,在命令中用“-a” 表示,是默认选项,可以省略
or 逻辑或,在命令中用“-o” 表示
not 逻辑非,在命令中用“!”表示

find命令的查找条件:
-name ‘字串’ 按照文件名查找文件,字串内可用通配符*、?和[]
- lname ‘字串’ 查找文件名匹配所给字串的所有符号链接文件,字串内可用通配符*、

?和[]
-gid n 查找属于ID号为n的用户组的所有文件
-uid n 查找属于ID号为n的用户的所有文件
-group ’字串’ 查找属于用户组名为所给字串的所有的文件
-user ’字串’ 查找属于用户名为所给字串的所有的文件
-empty 查找大小为0的目录或文件
-path ’字串’ 查找路径名匹配所给字串的所有文件
-perm 权限 查找具有指定权限的文件和目录,权限的表示可以如755,644
-nogroup 查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在
-nouser 查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在
-type 查找某一类型的文件
-size n [bck] 查找文件长度为n块的文件,带有c时表示文件长度以字节计
-depth 在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找

以时间为条件查找
-amin +n -n 按访问时间查找; -n指n分钟以内,+n指n分钟以前
-atime +n -n 按访问时间查找;-n指n天以内,+n指n天以前   
-cmin +n -n 按创建时间查找
-ctime +n -n 按创建时间查找
-mmin +n -n 按修改时间查找
-mtime +n -n 按修改时间查找


可执行的操作 :
-exec 命令 {} \; 对符合条件的文件执行所给的命令
{}表示命令的参数即为所找到的文件
命令的末尾必须以“ ;”结束
-ok 命令 {} \; 同-exec,但会询问用户是否执行该命令
-ls 详细列出所找到的所有文件
-fprintf 文件 将到的文件的文件名字写入到指定的文件
-print 在标准输出设备上显示查找出的文件名


find命令例子:

在/etc目录下查找所有以rc开头的文件名
#find /etc -name “rc*” -print
查找系统中所有文件长度为0的普通文件,并列出它们的完整路径
#find / -type f -size 0 -exec ls -l {} \;
在/etc下的所有以passwd开头的文件中查找是否有名为redhat的用户
#find /etc –name “passwd*” –exec grep “redhat” {} \;
查找当前目录下所有以txt结尾且2分钟内没有被访问过的文件
#find . -name “*.txt” -amin +2 -print





locate命令:
格式: locate [选项] 匹配条件模式
用于查找符合条件的文件,它会去保存文件与目录名称的数据库内,查找合乎条件的文件或

目录
需要先建立数据库,而后方可进行查找
updatedb命令用来生成最新的文件名数据库,它会在目录/var/lib/slocate/下生成

slocate.db 数据库
由于系统文件会发生变化,因此此数据库需要定期更新方能在查找时找到符合指定条件的文

件,也可以在查找前手动更新
它的查找速度比find快,但更新数据库的过程本身会很耗费时间