文件查找:
在文件系统上查找符合条件的文件个过程:
文件查找工具:
locate:非实时查找(依赖于事先构建的索引查找,索引是在系统较为空闲的时候自动更新的(周期性任务);用户可以手动更新此索引(updatedb))
优点:查找速度快消耗资源少;模糊查找:只要包含条件也可寻得
缺点:最新的文件无法查找,实时性不高
find:实时查找(通过遍历指定路径)
优点:精确查找文件名一一比对
缺点:查找速度慢
find命令
find 【option】。。。【查找路径】 【查找条件】【处理动作】
查找路径:默认为当前路径
查找条件:指定的查找标准,可以根据文件名、大小、属性等进行;默认找出指定路径下的所有文件
处理动作:对符合条件的文件做的操作;默认为输出至屏幕;
查找条件:
根据文件名进行查找:
-name “文件名称” 支持使用glob(* , ? , [])
-iname "文件名称" 不区分大小写,支持使用glob;
-regex “pattern” 以正则表达式匹配整个文件路径字符串,而不仅是文件名称;
根据属主进行查找
-user USERNAME :查找用户名为指定用户的文件
-group GROUPNAME:
-uid USERID:查找文件的属主指定uid的文件
-nouser:查找没有属主的文件
-nogroup
根据文件类型查找:
-type TYPE
f:普通文件(在ls中-表示)
d:目录
l:符号链接
b:块设备
c:字符设备
p:命名管道
s:套接字
组合查找条件:
与条件:-a
或条件:-o
非条件:-not,!
find /tmp \(-nouser -o -nogroup\) -ls
-ls处理针对的是()内的条件 ()需要\转译号 如果不加 只针对-nogroup条件
根据大小来查找:
-size 【+|-】 #UNIT
#UNIT:表示大于#-1且小于等于#
-#UNIT:表示小于等于#-1
+#UNIT:表示大于#
根据 时间戳查找:
以”天“为单位
-atime 【+|—】#
#:【#,#+1)
+:【#+1,∞】
-:(0,#)
-mtime
-ctime
以“分钟”为单位
-amin
-mmin
-cmin
根据权限:
-perm 【/|-】MODE
MODE:精确匹配
/MODE:任何一类用户的任何一位权限符合条件即可
比如/666:属主有读权限或写权限或者属组有读权限或写权限或者其他用户有读权限或写权限
-MODE:为每一类用户指定的权限都符合条件
比如-420:属主必须有读权限且属组有写权限其他用户不做要求
0表示对该类用户不作权限要求
处理动作:
-print:默认处理动作
-ls:类似与对找到文件做“ls -l”操作
-delete::删除查找到的文件:
-fls /path/to/somefile:查找到的文件详细路径信息保存到指定文件中
-exec COMMAND {} \; #不会提示确定,直接操作
-ok COMMAND {} \; #会提示确定,直接操作
注意:find命令会一次性找到所有符合条件的文件,并一同传递给后面的命令,但有些命令不能接受过长的参数,解决办法:find |xargs COMMAND
原文地址:http://5489884.blog.51cto.com/5479884/1691398