Linux的查找命令有5个: 1,find:最常用和最强大的查找命令,可以用它找到任何想找的文件。(迅速在指定的范围内查找到文件) 2,which:在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果; 3,type:用于区分某个命令到底是由shell自带的,还是由shell外部的独立二进制文件提供的。如果一个命令是外部命令,那么使用p参数,会显示该命令的路径,相当于which命令。type命令其实不能算查找命令; 4,whereis:只能用于程序名的搜索,而且只搜索二进制文件(参数b)、man说明文件(参数m)和源代码文件(参数s); 5,locate:相当于findname,可快速查找文件 各个命令详解: 一:find:查找任何文件(则鸡儿强大) find命令的格式: find〔PATH〕〔option〕〔action〕(find〔OPTIONS〕〔查找起始路径〕〔查找条件〕〔处理动作〕) find参数: 1,基于文件名的搜索 与文件名有关的参数: findnamefilename:查找文件名为filename的文件。filename可使用正则表达式表示。 findinamePATERN:不区分名称字母大小写 示例:查找所有文件名为passwd的文件。 〔root1761401746〕findnamepasswd usrbinpasswd etcpam。dpasswd etcpasswd 〔root1761401746〕 2,基于正则表达式的模式查找。 regex同样属于测试项。使用regex时有一点要注意:regex不是匹配文件名,而是匹配完整的文件名(包括路径)。 示例:当前目录下有一个文件abar9,如果你用ab。9来匹配,将查找不到任何结果,正确的方法是使用。ab。9或者。ab。9来匹配。‘。’(查找到的文件带有目录) 〔root1761401746opt〕find。regex。ab。9 。abar9 〔root1761401746opt〕 3,基于文件大小的搜索 size测试项根据文件的大小查找文件,文件大小既可以用块(block)来计量, 也可以用字节来计量。默认情况下以块计量文件大小,若想使用字节来计量只需要在数字参数后加c即可。 与文件大小有关的参数: sizeSIZE:查找文件大小刚好等于SIZE的文件; sizeSIZE:查找文件大小大于SIZE的文件; sizeSIZE:查找文件大小小于SIZE的文件。 其中,size的单位有: cbyte,字节; w字(2字节); bbit,块(512字节); k千字节; M兆字节; G吉字节。 示例: 1,查找文件size小于10个字节的文件或目录 find。size10c 2,查找文件size等于10个字节的文件或目录 find。size10c 3,查找文件size大于10个字节的文件或目录 find。size10c 4,查找文件size小于10k的文件或目录 find。size10k 5,查找文件size小于10M的文件或目录 find。size10M 6,查找文件size小于10G的文件或目录 find。size10G 7,搜索大于10KB的文件 find。typefsize10k 8,搜索等于10KB的文件 find。typefsize10k 9,查找超过1M的文件 findtypefsize1M 10,查找等于6字节的文件 find。size6c 4,基于文件类型的搜索 与文件类型有关的参数: typeTYPE:查找文件的类型为TYPE的文件。 TYPE的参数列表有: f:普通文件; l:符号连接; d:目录; c:字符设备; b:块设备; s:套接字; p:FIFO。 示例: 1,查找var目录下所有类型为socket的文件: findvartypes 2,查找usrbin符号链接文件: findusrbintypel 5,基于目录深度的搜索 与目录深度有关的参数: maxdepthn:n为数字,表示向下最大深度限制为n; mindepthn:n为数字,搜索出深度距离当前目录至少n个子目录的所有文件。 示例: 1,查找文件,向下最大深度限制为3 find。maxdepth3typef 2,搜索出深度距离当前目录至少2个子目录的所有文件 find。mindepth2typef 6,基于时间进行搜索 与时间有关的参数共有atime、ctime、mtime。下面以mtime说明: mtimen:n为数字,列出在n天之前的一天之内被更改过的文件名; mtimen:列出在n天之前(不含第n天本身)被更改过的文件名; mtimen:列出在n天之内(不含第n天本身)被更改过的文件名; newerfile:file为一个存在的文件,列出比file还要新的文件名。 示例: 1,查找文件更新日时在距现在时刻二天以内的文件 find。mtime2 2,查找文件更新日时在距现在时刻二天以上的文件 find。mtime2 3,查找文件更新日时在距现在时刻一天以上二天以内的文件 find。mtime2 4,查找文件更新日时在距现在时刻二分以内的文件 find。mmin2 5,查找文件更新日时在距现在时刻二分以上的文件 find。mmin2 6,查找文件更新日时在距现在时刻一分以上二分以内的文件 find。mmin2 7,查找文件更新时间比文件abc的内容更新时间新的文件 find。newerabc 8,查找etc目录下,所有比etcpasswd文件更新的文件。 findectneweretcpasswd 9,查找文件访问时间比文件abc的内容更新时间新的文件 find。anewerabc 10,查找从现在开始到24小时前,etc目录下所有改动过内容的文件都会被列出来。 findetcmtime0 7,基于用户或用户组名进行搜索 用户或用户组名有关的参数: uidn:n为数字,表示用户的UID; gidn:n为数字,表示用户的GID; username:name为用户账号名称; groupname:name为用户组名; nouser:寻找文件的所有者不存在于etcpasswd的文件; nogroup:寻找文件的所有用户组不存在于etcgroup的文件。 示例: 1,查找root用户在home目录下的所有文件。 findhomeuserroot 2,查找组名为gname的文件或目录 find。groupgname 3,查找属主被删除的文件 findnousertypef 4,查找用户组被删掉的文件 findnogrouptypef 8,基于文件权限进行搜索 文件权限有关的参数: permmode:查找文件权限刚好等于mode的文件; permmode:查找文件权限包含任一mode的权限的文件; permmode:查找文件权限必须要全部包括mode的权限的文件 示例: 1,查找权限为644的文件或目录(需完全符合) find。perm664 2,查找用户组权限为读写,其他用户权限为读(其他权限不限)的文件或目录 find。perm664 3,查找用户有写权限或者组用户有写权限的文件或目录 find。perm220 find。permuw,gw find。permuw,gw 4,查找所有者权限有读权限的目录或文件 find。permur 5,查找用户组权限有读权限的目录或文件 find。permgr 6,查找其它用户权限有读权限的目录或文件 find。permor 9,使用混合查找方式查找文件 参数有: !不属于 and(a)并 or(o)或者 示例: 1,在tmp目录下查找大于10000字节并在最后2分钟内修改的文件 findtmpsize10000candmtime2 2,在目录下查找用户是fred或者george的文件文件 finduserfredorusergeorge 3,在tmp目录中查找所有不属于panda用户的文件 findtmp!userpanda 10,1,查找空文件或空目录 find。empty 2,查找空目录并删除 find。emptytypeddelete 3,查找空文件并删除 find。emptytypefdelete 11,find其他: 1,仅仅查找非隐藏的文件(不显示隐藏文件): find。!regex。。。!regex。。。 12,清除临时文件 1,每个文件掩码的前面都有name。该列表可以扩展为包括您需要清除的系统中的任何临时文件类型。在代码的编译和连接过程中,程序员及其工具会生成示例中的那些文件类型:a。out,。o和core。其他的用户通常也会生成类似的临时文件,可以使用如。tmp,。junk等文件掩码来对命令进行相应的编辑。您可能还发现将命令放入一个称作clean的脚本中非常有用,当需要清除一个目录中的内容的时候就可以执行该脚本。 find。namea。outoname。oonamecorenamea。outoname。oonamecoreexecrmf{}; 13,维护LOG和TMP文件的存储空间 ,1,要为生成大量文件的应用程序维护LOG和TMP文件存储空间,可以将下列命令放入到每天运行的cron任务中: findLOGDIRtypedmtime0execcompressr{}; findLOGDIRtypedmtime5execrmf{}; 第一个命令找到LOGDIR目录中所有包含在24小时内(mtime0)进行了修改的数据的目录(typed),对它们进行压缩(compressr{})以节省磁盘空间。如果这些目录超过了一个工作周(mtime5),第二个命令则将其删除(rmf{}),以便增加磁盘上的可用空间。通过这种方式,cron任务自动地根据您所指定的时间窗口对目录进行维护。 14,find命令之exec exec解释: exec参数后面跟的是command命令,它的终止是以;为结束标志的,所以这句命令后面的分号是不可缺少的, 考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。{}花括号代表前面find查找出来的文件名。 示例: 1,lsl命令放在find命令的exec选项中 find命令匹配到了当前目录下的所有普通文件,并在exec选项中使用lsl命令将它们列出。 find。typefexeclsl{}; 2,在目录中查找更改时间在14日以前的文件并删除它们 find。typefmtime14execrm{}; 3,在目录中查找更改时间在5日以前的文件并删除它们,在删除之前先给出提示 find。name。logmtime5okrm{}; 4,查找文件移动到指定目录 find。name。logexecmv{}。。;, 5,用exec选项执行cp命令 find。name。logexeccp{}test3; 15,findexec中使用grep命令 示例: find命令首先匹配所有文件名为passwd的文件,例如passwd、passwd。old、passwd。bak,然后执行grep命令看看在这些文件中是否存在一个root用户。 findetcnamepasswdexecgreproot{}; 16,利用管道, 1,把find命令匹配到的文件名传递给xargs命令 find命令配合exec和xargs可以对所匹配到的文件执行几乎所有的命令。 二,which:查找系统命令位置 which命令的参数: a:将所有由PATH目录中可以找到的命令均列出来,而不是只列出第一个被找到的命令。 which命令的格式:which〔a〕command which示例: 〔root1761401746〕whichifconfig sbinifconfig 〔root1761401746〕 三,whereis:程序名搜索: whereis命令的格式: whereis〔bmsu〕文件或目录名 whereis命令的参数: b只查找二进制格式的文件 m只查找在说明文件manual路径下的文件 s只招source源文件 u查找不在上述三个选项当中的其他特殊文件 whereis示例: 〔root1761401746〕whereisifconfig ifconfig:sbinifconfigusrsharemanman8ifconfig。8。gz 〔root1761401746〕whereismifconfig ifconfig:usrsharemanman8ifconfig。8。gz 〔root1761401746〕 四,locate:利用数据库查找文件 locate不是Linux自带的命令,如果没有改命令需要yum安装 安装:yumyinstallmlocate 安装完使用locate定位内容,如果还报如下错:原因是安装完后没有更新库 locate:cannotstat()varlibmlocatemlocate。db:Nosuchfileordirectory 解决办法: 更新库:updatedb locate命令的格式: locate〔ir〕keyword locate命令的参数: b,basename只匹配路径名的基名 c,count只输出找到的数量 d,databaseDBPATH使用DBPATH指定的数据库,而不是默认数据库varlibmlocatemlocate。db e,existing只打印当前文件的条目 L,follow检查文件是否存在时,跟踪符号链接(默认) h,help显示帮助 i,ignorecase忽略大小写 l,limit,nLIMIT限制输出(或计数)以限制条目 m,mmap忽略,为了向后兼容 P,nofollow,H检查文件是否存在时,不要跟踪符号链接 0,null在输出上有NUL的单独条目 S,statistics不要搜索条目,打印关于每个数据库的统计信息 q,quiet安静模式,不会显示任何错误讯息 r,regexpREGEXP使用基本正则表达式 regex使用扩展正则表达式 s,stdio忽略,为了向后兼容 V,version显示版本信息 w,wholename匹配整个路径名(默认) locate示例: 〔rootwww〕locatepasswd etcpasswd etcpasswd etcnewspasswd。nntp etcpam。dpasswd 五,type:显示指定命令的类型 type命令格式: type〔option〕〔commond〕 type命令的参数有: t:输出file、alias或者builtin,分别表示给定的指令为外部指令、命令别名或者内部指令; p:如果给出的指令为外部指令,则显示其绝对路径; a:在环境变量PATH指定的路径中,显示给定指令的信息,包括命令别名。 命令的类型可能有如下几种: alias:别名; keyword:关键字,Shell保留字; function:函数,Shell函数; builtin:内建命令,Shell内建命令; file:文件,磁盘文件,外部命令; unfound:没有找到。 type示例: 〔root1761401746〕typedate dateisbindate 〔root1761401746〕typemysql mysqlisusrbinmysql 〔root1761401746〕typenginx nginxisusrsbinnginx 〔root1761401746〕typeif ifisashellkeyword 〔root1761401746〕 关注点赞不迷路〔可怜〕