文件查找
在文件系统上查找符合条件的文件 文件查找:locate,find 非实时查找(数据库查找):locate 实时查找:find locate: 依赖于事先构建的索引:索引的构建是在系统较为空闲时自动进行,手动更新数据库(updatedb) 索引构建需要遍历整个文件系统,极消耗资源: 工作特点: 查找速度快 模糊查找 非实时查找 find: 实时查找工具:通过遍历指定路径下的文件系统完成文件查找 工作特点: 好找速度略慢 精确查找 实时查找 语法: find [OPTION]...[查找路径] [查找条件][处理动作] 查找条件: 根据文件名查找: -name "文件名称";支持glob -iname "文件名称"; 不区分大小写 -regex "pattern" 以pattern匹配整个路径字符,而不仅仅是文件名称 根据文件属主属组查找 -user USERNAME:查找属主为指定用户的文件 -group GROUP:查找属组为指定组的文件 -uid UserID:查找属主为指定的UID号的文件 -gid GroupID:查找属组为指定GID号的文件 -nouser:查找没有属主的文件 -nogroup:查找没有属组的文件 根据文件类型查找 -type TYPE: f:普通文件 d:目录文件 l:连接符号文件 s:套接字文件 b:块设备文件 c:字符设备文件 p:管道文件 组合条件 与:-a 或:-o 非:-not 根据文件大小查找: -size[+|-] #UNIT 常用单位:k,M,G #UNIT:[#-1,#] -#UNIT:[0,#-1] +UNIT:[#:~] 根据时间戳进行查找: 以天为单位: -atime -mtime -ctime find / -mtime 3 #查找修改文件满3天的文件(满3天,不到4天) find / -mtime +3 #查找3天之前做过修改的文件 find / -mtime -3 #查找3天内做过修改的文件 以分钟为单位: -amin -mmin -cmin
练习
1.查找/var目录下属主为root,且属组为mail的所有文件或目录 2.查找/usr目录下不属于root、bin或者hadoop的所有文件或目录 3.查找/etc下最近一周内,内容修改过,同时属主不为root,也不是hadoop的文件或者目录 4.查找当前系统上没有属主和属组,且最近一周内被访问过的文件或者目录 5.查找/etc目录下大于1m且类型为普通文件的所有文件或者目录
答案
1.find . -user root -group mail -ls 2.find /usr -not \( -user root -o -user bin -o -user hadoop \) -ls find /usr -not -user root -a -not -user bin -a -not -user hadoop -ls 3.find /etc -mtime -7 -a -not \( -user root -o -user hadoop \) find /etc -mtime -7 -a -not -user root -a -not -user hadoop 4.find / -atime -7 -a -nouser -nogroup -ls 5.find /etc -type f -a -size +1M -ls