您的位置:首页 > 运维架构 > Linux

Linux文件查找之find详解

2015-12-19 16:07 561 查看
一、简介文件查找:在文件系统上查找符合条件的文件。
实现工具:find,locate,which,whereis
实现方式:whereis和locate是通过数据库查找文件,which是通过”PATH”环境变量规定的路径查找文件,find则是通过指定路径下遍历文件系统。

find的工作特性
实时查找工具,遍历指定起始路径下文件系统层级结构完成文件查找。工作特性:精确查找,速度略慢,实时查找 二、find命令具体用法1、find命令 # NAME find - search for files in a directory hierarchySYNOPSIS find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]用法:find 选项 [查找起始路径][查找条件][处理动作]查找起始路径:指定具体搜索目标起始路径;默认为当前目录;查找条件:根据文件名、大小、类型、从属关系、权限等查找标准进行;默认找出指定路径下的所有文件;处理动作:对符合查找条件的文件做出的操作;默认为输出至标准输出; 查找条件: 表达式:选项和测试 测试: 根据文件名查找:name “pattern” :支持glob风格的通配符;-iname “pattern”:不区分大小写;-regex pattern:基于正则表达式模式查找文件,匹配是整个路径,而非其名;不常用。根据文件从属关系查找:-user username:根据用户属性指定用户的文件;-group GRPNAME:指定所有用户组的文件;-uid UID:用户指定的UID的所有文件;-gid GID :用户组指定的GID的所有文件;-nouser:查找没有属主的文件;-nogroup:查找没有属组的文件;根据文件的类型查找:-type TYPE: f: 普通文件 d: 目录文件 l:符号链接文件 b:块设备 文件 c:字符设备文件 p:管道文件 s:套接字文件
根据文件的大小查找:-size[+][-]#unit常用单位:k,M,G#UNIT:(#-1,#] -#UNIT:[0,#-1] +#UNIT:(#,oo) 根据时间戳查找: 以“天”为单位: -atime #:(#-1,#] 某天访问 表示为#天之前的“一天之内”访问过的文件 -atime -#:(#,0] 某天内 -atime + #:(oo,#-1] 多于某天 -ctime change 修改:文件内容;用法与 -atime 类似; -mtime modification 修改:用户属性、用户组属性、文件名、; 用法与 -atime 类似; 以“分钟”为单位 :-amin -cmin -mmin 用法与上面类似; 根据权限来查找: -perm[/][-]mode mode:精确权限匹配 /mode:任何一类用户的权限的任何一位符合条件即满足9位权限的或关系 -mode:任何一类用户的权限的任何一位同时都要符合条件即满足9位权限的与关系 组合测试:与:-a , 不加连接符默认组合逻辑与 或:-o 非:-not,! 处理动作:-print :输出至标准输出-ls :类似 “ls-l”-delete :删除查找到的文件-fls /path/to/somefile-ok COMMAND {}\; :对查找到文件,等用户确认-exec COMMAND {}\; :由命令执行更改。 三、练习
1、查找/var目录下属主为root,且属组为mail的所有文件或目录;



2、查找/usr目录下不属于root, bin或hadoop的所有文件或目录;用两种方法;








3、查找/etc目录下最近一周内其内容修改过,且属主不是root用户也不是hadoop用户的文件或目录;



4、查找当前系统上没有属或属组,且最近一周内曾被访问过的文件或目录;






5、查找/etc目录下大于1M且类型为普通文件的所有文件;


6、查找/etc目录下所有用户都没有写权限的文件;




7、查找/etc目录至少有一类用户没有执行权限的文件;




8、查找/etc/init.d/目录下,所有用户都有执行权限,且其它用户有写权限的所有文件;




四、总结
1、组合测试需注意:-a:组合逻辑与(默认);-o:组合逻辑或;-not、!:组合逻辑非。
2、文件大小、时间戳用法比较特别
3、权限查找易混淆:/mode:相当于9位权限的逻辑或关系;-mode:9位权限的逻辑与的关系。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Linux search 表达式 files