文件查找locate,find

文件查找:在文件系统上查找符合条件的文件

1.locate

查找事先构建好的索引库(/var/lib/mlocate/mlocate.db);索引库:系统自动实现(计划任务)或手动更新数据库 #updatedb

工作特性:查找速度快;模糊呀查找;非实时查找;

locate [option]...PATTREN
-b 只匹配basename
-c 统计匹配到的行数
-i 忽略字符大小写

2.find

实时查找工具,通过遍历指定起始路径下文件系统层级结构完成文件查找;
*工作特性*:查找速度略慢;精确查找;实时查找;

find [查找起始路径] [查找条件] [处理动作]
查找起始路径:默认为当前目录
查找条件:指定的查找标准,可根据文件名,大小,权限...;默认为指定起始路径下的所有文件;
处理动作:对符合条件的文件作出的操作;例如:删除...;默认为输出至屏幕

查找条件
1.根据文件名:
-name|iname "PATTERN";此处的PATTERN指glob风格的通配(*,?,[].[^])

2.根据从属关系:-user USERNAME;-group GROUPNAME

3.根据uid,gid号:-uid UID号;-gid GID号;

4.查找没有属主,属组的文件:-nouser |-nogroup

(文件的属主被删除后,文件属主,属组位置表现为原用户的uid,gid号;-nouser|-nogroup查找的就是此类文件)

5.根据文件类型:-type f|d|l|b|c|p|s

6.根据文件大小:-size [+|-]#单位

单位(#-1,#]    ##单位:k,M,G默认是字节
-#单位:[0,#-1]  例:-5k 表示小于5k
+#单位:(#,oo)例:+5k 表示大于5k

7.根据时间戳查找

以"天"为单位:
-atime [+|-]#
-mtime [+|-]#
-ctime [+|-]#
+#:(oo,#]    例:+3表示3天前
-#:(#,0)       例:-3表示3天内
以"分钟"为单位
-amin [+|-]#
-tmin [+|-]#
-cmin [+|-]#

8.根据权限查找:-perm [/|-]mode
mode 精确匹配权限
/mode 属主属组其他人的9位权限中任何一位权限满足即满足
-mode 属主属组其他人的9位权限中的每一位同时符合条件

/222 至少有一类用户有写权限
/001其他人有执行权限
-001其他人有执行权限
-222所有用户都有写权限
/022属组或其他人有写权限
-022属组和其他人都有写权限

9.限制查找目录的层级数
-maxdepth # 最大深度为#;1表示当前目录
-mindepth # 从第#层开始查找
find / -mindepth 2 -maxdepth 2 仅查找根目录下的二级子目录

10.根据节点编号查找:
-inum 节点编号

11.查找节点编号相同的文件:
·-samefile FILE

12.查找链接数为n的文件
-links n

13.查找/etc目录下除了sane.d目录下所有.conf后缀的文件(-path "/PATH" -a -prune)

find /etc -path "/etc/sane.d" -a -prune -o -name "*.conf"  -ls
find /etc \(  -path "/etc/sena.d" -o -path "/etc/modprobe.d"   \)  -a -prune -o -name "*.conf" 
###查找etc目录下除了sane.d或modprobe.d目录下所有.conf后缀的文件

14.组合测试条件
-a 同时满足;默认组合逻辑
-o 符合一个条件即可 ###注意:-o时,使用ls列所有符合条件的文件,需要用小括号括起来(否则仅显示ls前一个-o匹配到的文件),且小括号需要转义
! |-not 取反
德摩根定律:非A且非B=非(A -o B) 非A或非B=非(A -a B)

处理动作

-ls 相当于ls -l,显示文件的详细信息;
-delete 删除
-fls /PATH/TO/SOMEFILE 将查找到文件的详细信息保存至指定的文件中;
-ok COMMAND {} \; 对查找到的文件执行由COMMAND表示的命令,需用户确认操作;
-exec COMMAND { } \;对查找到的文件执行由COMMAND表示的命令,无需用户确认;

你可能感兴趣的:(文件查找locate,find)