Loading... <p><strong><span style="font-size: 20px">前言: </span></strong></p> <p> <span style="font-size: 14px">Linux文件种类繁多,难免在维护Linux中会忘记文件的路径。所有在维护Linux中学好查找命令是非常必要的。</span></p> <p><span style="font-size: 14px"> Linux查找命令有很多,比如 whereis,type,which,locate,find(重点)。</span></p> <p></p> <p> <span style="font-size: 18px"><strong> 1、whereis</strong></span></p> <p> <span style="font-size: 14px">whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。</span></p> <p> whereis命令的使用实例:</p> <p style="text-align:center"><img alt="QQ截图20150608101211.png" src="//cto.wang/usr/uploads/2016/07/20160703145009-29.png" title="1433729230263704.png" /></p> <p></p> <p> <strong><span style="font-size: 18px"> 2、type</span></strong></p> <p> <span style="font-size: 14px">type命令其实不能算查找命令,它是用来区分某个命令到底是由shell自带的,还是有shell外部的独立二级制文件提供的。如果一个命令是外部命令,那么使用-P参数,会显示该命令的路径,相当于which命令。</span></p> <p> type命令的使用实例:</p> <p style="text-align:center"><img alt="QQ图片20150608130234.png" src="//cto.wang/usr/uploads/2016/07/20160703145009-16.png" title="1433739463596265.png" /></p> <p> 3、which</p> <p> <span style="font-size: 14px"> which命令的作用是在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令就可以看到系统命令是否存在,以及执行的到底是哪一个位置的命令。</span></p> <pre class="brush:bash;toolbar:false">常用参数:--skip-alias:去除别名。</pre> <p> which命令的使用实例:</p> <p style="text-align:center"><img alt="QQ截图20150608110929.png" src="//cto.wang/usr/uploads/2016/07/20160703145009-3.png" title="1433732660109736.png" /></p> <p> 这里cd命令是内建命令,因而无法查到。</p> <p> </p> <p> <span style="font-size: 18px"><strong>4、locate</strong></span></p> <p> <span style="font-size: 14px">locate查找为非实时查找,也成模糊查找。locate依赖于索引,而索引构建时在系统空闲时由系统自动进行(每天任务);手动进行使用updatedb;locate命令的优势是查找速度快,劣势为非精准查找。</span></p> <pre class="brush:bash;toolbar:false"> locate命令使用实例: locate的参数: -n #:限定显示#行 -i:不区分大小写,默认区分 -r FILE_NAME:显示以FILE_NAME为结尾的行</pre> <p></p> <p style="text-align:center"><img alt="QQ截图20150608144729.png" src="//cto.wang/usr/uploads/2016/07/20160703145009-46.png" title="1433745765428347.png" /></p> <p style="text-align:center"><img alt="QQ截图20150608153537.png" src="//cto.wang/usr/uploads/2016/07/20160703145009-34.png" title="1433748665173954.png" /></p> <p> <strong>关于locate的其他参数使用,这里就不做详细讲解了,还请朋友们自行Google</strong>。</p> <p></p> <p> <span style="font-size: 18px"><strong>5、find(重点)</strong></span></p> <p> <span style="font-size: 14px">find命令是遍历所有文件进行条件匹配,查找速度慢但结果精确,即为精准查找。也是我们在生产环境中使用最多,最强大的文件查找工具。</span></p> <pre class="brush:bash;toolbar:false;"> find的使用格式: find [option]... [查找路径] [查找条件] [处理动作] 查找路径:默认为当前目录 查找条件:默认为指定路径下的所有文件 处理动作:默认为显示至屏幕</pre> <p> <strong> 查找条件:</strong></p> <pre class="brush:bash;toolbar:false"> -name “文件名称”:支持使用文件通配(globbing)字符 *:任意长度任意字符 ?:任意单个字符 [ ]:指定范围内的单个字符 -iname “文件名称”:查找时忽略字符大小写 -user USERNAME:根据属主查找 -group GRPNAME:根据文件属组查找 -uid UID -gid GID -nouser:没有属主的文件 -nogroup:没有属组的文件</pre> <p> <strong>组合条件查找:</strong></p> <pre class="brush:bash;toolbar:false"> 与:-a,同时满足 或:-o,满足一个即可 非:-not,!,条件取反 注:-not A -a -not B = -not\(A -o B\) -not A -o -not B = -not\(A -a B\)</pre> <p><span style="font-size: 14px"></span></p> <p> <strong> -type TYPE:根据文件类型查找</strong></p> <pre class="brush:bash;toolbar:false"> f:普通文件 d:目录文件 l:符号链接 b:块设备 s:套接字文件 p:命令管道</pre> <p> <strong>-size [+|-]#UNIT(单位)</strong></p> <pre class="brush:bash;toolbar:false"> 常用单位:k,M,G #UNIT:#-1<x<# -#UNIT:x<=#-1 +#UNIT:x>#</pre> <p><span style="font-size: 14px"></span></p> <p> <strong>根据时间戳查找:</strong></p> <pre class="brush:bash;toolbar:false"> 以“天”为单位 -atime(访问时间) [+|-]# +#:(#+1)天之前被访问过的文件 x>=#+1 -#:x<# x:#<=x<#+1 例如:+2:最近一刻访问文件的时间是2天以前 -2:访问文件的时间是当前时间之2天之内 2:访问文件的时间大于2天小于3天 -mtime(修改时间): -ctime(改变时间): 用法同atime。</pre> <p><span style="font-size: 14px"></span></p> <p> <strong>以“分钟”为单位</strong> </p> <pre class="brush:bash;toolbar:false"> -amin -mmin -cmin</pre> <p><span style="font-size: 14px"></span></p> <p> <strong>根据文件权限查找:</strong><span style="font-size: 14px"> <br /></span></p> <pre class="brush:bash;toolbar:false"> -perm [+|-]MODE MODE:与MODE精确匹配 +MODE:任何一类用户的取消只要包含对其指定的任何一位权限即可 -MODE:每一类用户指定的检查权限都匹配;</pre> <p><span style="font-size: 14px"></span></p> <p> <strong>处理动作:</strong><span style="font-size: 14px"> <br /></span></p> <pre class="brush:bash;toolbar:false"> -print:默认处理动作,显示 -ls:类似于ls -l显示详细信息 -exec COMMAND {} \; -ok COMMAND {} \; 注:一次性查找符合条件的所有文件,并一同传递给-exec或-ok后面指定的命令;但有些命令不能接受过长的参数;此时使用另一种方式 find | xargs COMMAND</pre> <p><span style="font-size: 14px"></span></p> <p><strong> 实战演示:</strong><br /><span style="font-size: 14px"></span></p> <pre class="brush:java;toolbar:false">1、查找/var/目录属主为root且属组为mail的所有文件;</pre> <p style="text-align:center"><img alt="QQ截图20150608210555.png" src="//cto.wang/usr/uploads/2016/07/20160703145009-5.png" title="1433768489128227.png" /></p> <pre class="brush:java;toolbar:false">2、查找/usr目录下不属于root、bin或hadoop的所有文件</pre> <p style="text-align:center"><img alt="QQ截图20150608211042.png" src="//cto.wang/usr/uploads/2016/07/20160703145010-50.png" title="1433768735363018.png" /></p> <pre class="brush:java;toolbar:false">3、查找/etc/目录下最近一周内其内容修改多的,且不属于root或hadoop的文件;</pre> <p style="text-align:center"><img alt="QQ截图20150608211809.png" src="//cto.wang/usr/uploads/2016/07/20160703145010-21.png" title="1433769191124577.png" /></p> <pre class="brush:java;toolbar:false">4、查找当前系统上没有属主或属组,且最近1个月内曾被访问过的文件;</pre> <p style="text-align:center"><img alt="QQ截图20150608212624.png" src="//cto.wang/usr/uploads/2016/07/20160703145010-78.png" title="1433769677367314.png" /></p> <pre class="brush:java;toolbar:false">5、查找/etc/目录下大于1M且类型为普通文件的所有文件;</pre> <p style="text-align:center"><img alt="QQ截图20150608212822.png" src="//cto.wang/usr/uploads/2016/07/20160703145010-76.png" title="1433769817551524.png" /></p> <pre class="brush:java;toolbar:false">6、查找/etc/目录所有用户都没有写权限的文件</pre> <p style="text-align:center"><img alt="QQ截图20150608213127.png" src="//cto.wang/usr/uploads/2016/07/20160703145010-57.png" title="1433769982621805.png" /></p> <pre class="brush:java;toolbar:false">7、查找/etc/目录下至少有一类用户没有写权限;</pre> <p style="text-align:center"><img alt="QQ截图20150608214309.png" src="//cto.wang/usr/uploads/2016/07/20160703145010-88.png" title="1433770685139675.png" /></p> <pre class="brush:java;toolbar:false">8、查找/etc/init.d/目录下,所有用户都有执行权限且其他用户有写权限的文件</pre> <p style="text-align:center"><img alt="QQ截图20150608214646.png" src="//cto.wang/usr/uploads/2016/07/20160703145010-78-1.png" title="1433770899860122.png" /></p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信