文件查找之locate与find

来源:互联网 发布:java缓存过程面试 编辑:程序博客网 时间:2024/06/03 16:25

slocate:

语法slocate [关键字段]

          locate [关键字段] 

说明所有文件名及其所在路径包含关键字段的文件与目录都会显示。

       slocate先将当前目录结构做成一个数据库,然后在此数据库中搜索匹配记录,因此它比find命令的搜索速度更快。

       --生成数据库的命令:updatedb。输入updatedb命令后,在var/lib/mlocate 中生成mlocate.db.


find:

语法find 【路径】【参数】【表达式】
说明从指定路径下递归向下搜索文件,在不指定查找目录的情况下是对整个系统遍历查找。
        支持按照各种条件方式搜索,功能强大。
        支持对搜素得到的文件进一步用命令操作。

常用参数如下:
根据文件属性查找
-user:根据文件拥有者寻找文件
-group:根据文件所属组寻找文件
-name:根据文件名寻找文件;-iname:不区分大小写
-uid:根据uid查找文件




 -gid:根据gid查找文件 eg: find /tmp -gid 1000 查找gid是1000的文件
 -perm:根据文件权限寻找文件

+:满足其中的一位就可匹配 -:只指定权限为1的位,其他位不作要求.

eg:

find / -perm 755 查找根目录下权限是755的文件

find / -perm +222 表示只要有一类用户(属主,属组,其他)匹配写权限就行.
find / -perm +6 只要 其他 中的读或写权限为1. eg:--- --- 100、--- --- 010、--- ---110.
find / -perm -222 表示必须所有类别用户都满足有写权限,第二位必须为1.


-size:根据文件大小寻找文件

eg:

find /tmp -size  2M  查找在/tmp目录下等于2M的文件

find /tmp -size +2M 查找在/tmp目录下大于2M的文件

find /tmp -size -2M  查找在/tmp目录下小于2M的文件

-type x:根据文件类型寻找文件

 x参数对应:b--块设备文件,c--字符设备文件,d--目录文件,l--符号链接文件,p--命名管道,f--普通文件,s--socket文件


根据时间查找可以使用stat命令来查看文件的时间信息):

-amin   n 查找n分钟以前被访问过的所有文件
-atime  n 查找n天以前被访问过的所有文件
-cmin   n 查找n分钟以前文件状态被修改过的所有文件

-ctime  n 查找n天以前文件状态被修改过的所有文件

-mmin   n 查找n分钟以前文件内容被修改过的所有文件。

-mtime  n 查找n天以前文件内容被修改过的所有文件。

eg: 

find /tmp –atime +5 //表示查找在五天内没有访问过的文件

find /tmp -atime -5   //表示查找在五天内访问过的文件

表达式通配符:

find的表达式使用通配符时需使用“”
*: 表示通配任意的字符。
?:表示通配任意的单个字符。
[]:表示通配括号里的任意一个字符。



-a,-o,-not的使用:
-a:连接两个不同的条件(两个条件同时满足)。
-o:连接两个不同的条件(两个条件满足其一)。
-not:满足对条件取反的条件


操作找到的文件
语法:find 【路径】【参数】【表达式】-exec 命令 {} \;
说明: 直接对符合条件的文件执行所给的命令,不询问用户是否需要执行。
        {}表示命令的参数即为find找到的文件。
        \禁止转义
        ;表示本行命令结束。

语法:find 【路径】【参数】【表达式】-ok 命令 {} \;
说明:会询问用户是否需要执行该命令。

-ls:列出所找到的所有文件
-fprintf 文件名: 将找到的文件名写入指定文件
-printf:在标准输出设备上显示查找到的文件名(默认情况下的操作)




0 0