文件搜索Linux提供了在文件系统上查找符合条件的文件的工具:locate、findlocate命令locate命令依赖于预先构建的索引库来查找对应的文件;其工作特点:搜索速度快;模糊查询;非实时搜索。locate命令的用法1、命令格式locate[OPTION]...PATTERN...2、命令选项-b:只匹配路径中的基名;-c:统计符合条件的文件数;-r:BRE(BasicRegularExpression)find命令find命令从指定的起始目录开始,递归搜索其子目录,找到满足搜索条件的文件,并可以对其进行相关操作。其工作特点:搜索速度慢;准确的实时搜索。find命令的用法命令格式find[OPTION][搜索起始路径][搜索条件][处理动作]find起始路径:指定具体搜索目标的起始路径;默认是当前目录;搜索条件:指定的搜索条件,可以按照文件名、大小、类型、隶属关系、权限等标准进行;默认是查找指定路径下的所有文件;处理动作:对满足查找条件的文件进行删除等操作;默认是输出到标准输出;1.搜索条件:(1)Searchbyfilename-name"pattern":按文件名搜索;-iname"pattern":忽略大小写;(2)按从属关系搜索-userUSERNAME:查找属主指定用户的所有文件;-groupGROUPNAME:查找指定组的所有文件;-uid:查找指定uid的所有文件;-gid:查找指定gid的所有文件;-nouser:查找没有属主的文件;-nogroup:查找没有组的文件;(3)按文件类型查找-typeTYPEf,d,l,b,c,p,s(4)组合测试-a:and,默认组合操作-o:or-not,!:Not(5)根据文件大小搜索-size[+|-]#UNIT常用单位:k,M,G#UNIT:(#-1,]-#UNIT:[0,#-1]+#UNIT:(#,infinity)(6)根据时间戳查找,以“天”为单位查找-atime[+|-]##:[#,#-1),表示#天和#天之内的时间-#:(#,0],表示从#天到现在的时间+#:(无限小,#-1),表示#天之前和#天之内的时间-mtime-ctime以“分钟”为单位搜索-amin-mmin-cmin(7)搜索为基础onpermissions-perm[/]-]mode:mode:权限精准匹配/mode:任意类型用户(u,g,o)(r,w,x)的任意一种权限如果满足条件,则满足;9种权限模式之间存在“或”关系:每类用户(u,g,o)的权限中的每一位(r,w,x)同时满足条件,则满足;9位权限之间存在“与”关系2.处理动作:-print:输出到标准输出;默认操作;-ls:类似于对找到的文件执行“ls-l”命令,输出文件的详细信息;-delete:删除找到的文件;-fls/PATH/TO/SOMEFILE:将找到的所有文件的长格式信息保存到指定文件;-ok命令{}\;:对找到的每个文件执行COMMAND代表的命令;每次操作均由用户确认;其中“{}”是文件的占位符;-执行命令{}\;:对找到的每个文件执行COMAMND代表的命令;注意:find将找到的文件路径传递给后面的命令时,会先找到所有满足条件的文件路径,一次性传递给后面的命令;但是有些命令不能接受太长的参数,此时命令执行会失败;绕过这个问题的另一种方法:find|xargsCOMMANDExercise(1)查找/var目录下属主为root,属组为mail的所有文件或目录;#find/var-userroot-groupmail\(-typef-o-typed\)-ls(2)查找/usr目录下所有不属于root、bin或hadoop的文件或目录;使用两种方法;#找到/usr!-用户根!-用户垃圾箱!-userhadoop-ls#找到/usr!\(-userroot-o-userbin-o-userhadoop\)-ls(3)查找/etc目录下上周修改过的内容,属主不是root用户不是hadoop用户的文件或目录;#找到/etc-mtime-7!-用户根!-userhadoop\(-typef-o-typef\)-ls(4)查找当前系统上没有属性的主组或所属组,以及上周访问过的文件或目录;#find/\(-nouser-o-nogroup\)-atime-7\(-typef-o-typed\)-ls(5)查找/etc目录下所有大于1M且其类型的文件是普通文件;#find/etc-size+1M-typef-ls(6)在/etc目录下查找所有用户没有写权限的文件;#find/etc-perm!/222-ls(7)在/etc目录下至少找到一类用户没有执行权限的文件;#寻找/ETC!-perm-111-ls(8)查找/etc/init.d/目录下所有用户有执行权限,其他用户有写权限的所有文件;#找到/etc/init.d-perm-113-typef-ls
