Loading... <p>一、简介</p> <p> 在linux系统中存在"一切皆文件"的说法,这就足以说明文件的重要性,因此查找文件也是我们必须要掌握的技能。这时候熟练使用locate、find命令也就显得至关重要。尤其是find命令常用于日常工作中如安装完某个软件之后要查看这些软件的安装配置路径,或是需要按指定条件直接查找我们需要操作的文件。因此更需要熟练掌握此命令。</p> <p>二、用法详解</p> <p><strong>locate</strong>:模糊查找命令,查找的是linux系统每天特点时间自动索引备份到系统数据库中的文件。</p> <p>优点:查找文件速度快</p> <p>缺点:查找到的结果不是实时结果(必要时,可手动执行updatedb命令索引文件到数据库,但是相当耗时。)</p> <p>格式:<span style="font-size: 10.5pt;line-height: 1.5">locate [OPTION]… PATTERN…</span></p> <p>属于模糊非实时查询,只要查询路径包含关键字即会显示出查询结果,效果如下图:</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160732-32.png" title="1440936260603181.png" alt="blob.png" /></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160732-84.gif" border="0" /><strong>find</strong>:通过遍历指定的目标目录查找文件,可以根据文件名称、日期、大小、权限进行文件实时查找</p> <p>优点:查找到的结果保证是实时结果</p> <p>缺点:查找速度不如locate快</p> <p>格式:</p> <p><span style="font-size: 10.5pt;line-height: 1.5">find [OPTIONS] [查找路径] [查找条件] [处理动作]</span></p> <p><span style="font-size: 10.5pt;line-height: 1.5">find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path…] [expression]</span></p> <p><span style="font-size: 10.5pt;line-height: 1.5">查找路径:默认为当前路径</span></p> <p><span style="font-size: 10.5pt;line-height: 1.5">查找条件:默认为指定路径下的所有文件</span></p> <p><span style="font-size: 10.5pt;line-height: 1.5">处理动作:默认为显示到屏幕中</span></p> <p><span style="font-size: 10.5pt;line-height: 1.5">查找条件:</span></p> <p>1、-name "文件名":支持使用globbing(*,?,[],[^])<span style="font-size: 10.5pt;line-height: 1.5"> </span></p> <p><span style="font-size: 10.5pt;line-height: 1.5">例:按文件名查找命令为:find / <span style="color:#ff0000">-name</span> "rpm",如下图:</span></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160732-84.gif" border="0" /><span style="font-size: 10.5pt;line-height: 1.5"><img src="//cto.wang/usr/uploads/2016/07/20160703160732-51.png" title="1440936277872285.png" alt="blob.png" /></span></p> <p>2、-iname 不区分文件名大小写<span style="font-size: 10.5pt;line-height: 1.5"></span></p> <p><span style="font-size: 10.5pt;line-height: 1.5">例:按文件名</span><span style="font-size: 10.5pt;line-height: 1.5">不区分大小写</span><span style="font-size: 10.5pt;line-height: 1.5">查找命令为:find /</span><span style="font-size: 10.5pt;line-height: 1.5"> </span><span style="color:#ff0000;font-size: 10.5pt;line-height: 1.5">-iname</span><span style="font-size: 10.5pt;line-height: 1.5"> </span><span style="font-size: 10.5pt;line-height: 1.5">"rpm",如下图:</span></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160732-84.gif" border="0" /><img src="//cto.wang/usr/uploads/2016/07/20160703160732-69.png" title="1440936290261208.png" alt="blob.png" /></p> <p>3、-user 根据属主查找文件</p> <p><span style="font-size: 10.5pt;line-height: 1.5"></span></p> <p><span style="font-size: 10.5pt;line-height: 1.5">例:按属主查找文件命令为:find /tmp <span style="color:#ff0000">-user </span>lxx,如下图:</span></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160732-84.gif" border="0" /><img src="//cto.wang/usr/uploads/2016/07/20160703160732-7.png" title="1440936303636834.png" alt="blob.png" /><span style="font-size: 10.5pt;line-height: 1.5"><br /></span></p> <p>4、-group 根据属组查找文件<span style="font-size: 10.5pt;line-height: 1.5"></span></p> <p><span style="font-size: 10.5pt;line-height: 1.5">例:按属主查找文件命令为:find /tmp <span style="color:#ff0000">-group </span>lxx,如下图:</span></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160732-84.gif" border="0" /><img src="//cto.wang/usr/uploads/2016/07/20160703160732-25.png" title="1440936314949891.png" alt="blob.png" /><span style="font-size: 10.5pt;line-height: 1.5"><br /></span></p> <p>5、-uid 根据uid查找文件<span style="font-size: 10.5pt;line-height: 1.5"></span></p> <p><span style="font-size: 10.5pt;line-height: 1.5">例:按uid查找文件命令为:find /tmp <span style="color:#ff0000">-uid </span>502 -ls,如下图:</span></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160732-84.gif" border="0" /><img src="//cto.wang/usr/uploads/2016/07/20160703160732-97.png" title="1440936323771705.png" alt="blob.png" /><span style="font-size: 10.5pt;line-height: 1.5"><br /></span></p> <p>6、-gid 根据gid查找文件<span style="font-size: 10.5pt;line-height: 1.5"></span></p> <p><span style="font-size: 10.5pt;line-height: 1.5">例:按gid查找文件命令为:find /tmp <span style="color:#ff0000">-gid </span>502 -ls,如下图:</span></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160732-84.gif" border="0" /><img src="//cto.wang/usr/uploads/2016/07/20160703160733-2.png" title="1440936331929802.png" alt="blob.png" /><span style="font-size: 10.5pt;line-height: 1.5"><br /></span></p> <p>7、查找没有属主的文件<span style="font-size: 10.5pt;line-height: 1.5"></span></p> <p><span style="font-size: 10.5pt;line-height: 1.5">例:查找没有属主的文件命令为:find /tmp <span style="color:#ff0000">-nouser</span> -ls,如下图:</span></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160732-84.gif" border="0" /><img src="//cto.wang/usr/uploads/2016/07/20160703160733-47.png" title="1440936338173545.png" alt="blob.png" /><span style="font-size: 10.5pt;line-height: 1.5"><br /></span></p> <p>8、查找没有属组的文件<span style="font-size: 10.5pt;line-height: 1.5"></span></p> <p><span style="font-size: 10.5pt;line-height: 1.5">例:查找没有属组的文件命令为:find /tmp <span style="color:#ff0000">-nogroup</span> -ls,如下图:</span></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160732-84.gif" border="0" /><img src="//cto.wang/usr/uploads/2016/07/20160703160733-86.png" title="1440936346752086.png" alt="blob.png" /><span style="font-size: 10.5pt;line-height: 1.5"><br /></span></p> <p>9、组合查找条件<span style="font-size: 10.5pt;line-height: 1.5"></span></p> <p>与(所有条件必须同时满足,-a默认可省):-a 查找条件1 -a 查找条件2 -a …</p> <p>或(满足其中一个条件即可):-o 查找条件1 -o 查找条件2 -o …</p> <p>非(不满足指定条件的才可以): -not,! </p> <p> -not 查找条件</p> <p>注:-a优先级高于-o优先级</p> <p><span style="font-size: 10.5pt;line-height: 1.5">例:查找</span><span style="font-size: 10.5pt;line-height: 1.5"><span style="color:#ff0000">与</span>条件,包含centos文件并且没有属组的文件,命令为:</span></p> <p><span style="font-size: 10.5pt;line-height: 1.5"></span></p> <p>find /tmp/ -name "*centos*" <span style="color:#ff0000">-a</span> -nogroup -ls 等价于 </p> <p><span style="font-size: 10.5pt;line-height: 1.5">find /tmp/ -name "*centos*" -nogroup -ls</span></p> <p>如下图:<span style="font-size: 10.5pt;line-height: 1.5"><br /></span></p> <p></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160732-84.gif" border="0" /><img src="//cto.wang/usr/uploads/2016/07/20160703160733-8.png" title="1440936355215036.png" alt="blob.png" /></p> <p><span style="font-size: 10.5pt;line-height: 1.5">例:查找<span style="color:#ff0000">或</span></span><span style="font-size: 10.5pt;line-height: 1.5">条件,包含centos文件并且没有属组的文件,命令为:</span></p> <p><span style="font-size: 10.5pt;line-height: 1.5">find /tmp/ -name "*centos*" <span style="color:#ff0000">-o</span> -nogroup (注意此处不能加-ls命令,会有问题),<span style="font-size: 10.5pt;line-height: 1.5">如下图:</span></span><span style="font-size: 10.5pt;line-height: 1.5"></span></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160732-84.gif" border="0" /><img src="//cto.wang/usr/uploads/2016/07/20160703160733-29.png" title="1440936377500152.png" alt="blob.png" /></p> <p><span style="font-size: 10.5pt;line-height: 1.5">例:查找<span style="color:#ff0000">非</span></span><span style="font-size: 10.5pt;line-height: 1.5">条件,查找属主不是root用的文件,命令为</span></p> <p><span style="font-size: 10.5pt;line-height: 1.5">find /tmp/ <span style="color:#ff0000">-not</span> -user root -ls 或 </span><span style="font-size: 10.5pt;line-height: 1.5">find /tmp/</span><span style="font-size: 10.5pt;line-height: 1.5"> <span style="color:#ff0000">!</span></span><span style="font-size: 10.5pt;line-height: 1.5"><span style="color:#ff0000"> </span></span><span style="font-size: 10.5pt;line-height: 1.5">-user root -ls</span><span style="font-size: 10.5pt;line-height: 1.5">如下图:</span></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160732-84.gif" border="0" /><img src="//cto.wang/usr/uploads/2016/07/20160703160733-29-1.png" title="1440936387646369.png" alt="blob.png" /><span style="font-size: 10.5pt;line-height: 1.5"><span style="font-size: 10.5pt;line-height: 1.5"><br /></span></span></p> <p>find复杂逻辑处理公式:</p> <p>非A 且 非B = 非(A或B)</p> <p>非A 或 非B = 非(A且B)</p> <p>例:<span style="font-size: 10.5pt;line-height: 1.5">find /tmp/<span style="color:#ff0000"> -not</span> -name "*.txt" <span style="color:#ff0000">-a -not</span> -name "*.out" 等价于</span><span style="font-size: 10.5pt;line-height: 1.5"> find /tmp/ <span style="color:#ff0000">-not</span> \( -name "*.txt" <span style="color:#ff0000">-o</span> -name "*.out" \) </span></p> <p><span style="font-size: 10.5pt;line-height: 1.5"><span style="color:#ff0000">注:小括号因为比较特殊,所以此处需转义</span></span></p> <p></p> <p>10、根据文件类型查找<span style="font-size: 10.5pt;line-height: 1.5"><br /></span></p> <p><span style="font-size: 14px;line-height: 21px">命令格式:-type TYPE:根据文件类型查找</span></p> <p>参数说明:</p> <p> -f:普通文件</p> <p> -d: 目录文件</p> <p> -l: 符号链接文件</p> <p> -b: 块设备文件</p> <p> -c: 字符设备文件</p> <p> -p: 命令名管道文件</p> <p> -s: 套接字文件</p> <p>示例如下图:</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160732-84.gif" border="0" /><img src="//cto.wang/usr/uploads/2016/07/20160703160733-52.png" title="1440936400901433.png" alt="blob.png" /></p> <p>11、根据文件大小查找</p> <p>命令格式:<span style="color:#ff0000">-size</span>[+|-]#UNIT:</p> <p>常用单位:k,M,G</p> <p>#UNIT: #-1 < x <= # 如1.1k,1.9k,2k等都算作2k文件</p> <p>如下图:</p> <p><span style="font-size: 10.5pt;line-height: 1.5"><img src="//cto.wang/usr/uploads/2016/07/20160703160732-84.gif" border="0" /><img src="//cto.wang/usr/uploads/2016/07/20160703160734-43.png" title="1440936412111015.png" alt="blob.png" /><img src="//cto.wang/usr/uploads/2016/07/20160703160734-1-1.png" title="1440936423704968.png" alt="blob.png" /></span><span style="font-size: 10.5pt;line-height: 1.5"></span></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160732-84.gif" border="0" /></p> <p>-#UNIT:x <= #-1 <span style="font-size: 10.5pt;line-height: 1.5">如-2k:1k,0.9k等都符合条件,但是1.1k-1.9k就不符合条件</span></p> <p><span style="font-size: 10.5pt;line-height: 1.5">如下图:</span></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160732-84.gif" border="0" /><img src="//cto.wang/usr/uploads/2016/07/20160703160734-29.png" title="1440936440989508.png" alt="blob.png" /><span style="font-size: 10.5pt;line-height: 1.5"><br /></span></p> <p>+#UNIT:x > # 如+2k:2.1k,3.1k都符合条件,不包含2k本身。</p> <p>如下图:</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160732-84.gif" border="0" /><img src="//cto.wang/usr/uploads/2016/07/20160703160735-81.png" title="1440936451238308.png" alt="blob.png" /></p> <p>12、根据时间戳查找<br /> a.以<span style="color:#ff0000">天</span>为单位进行查找</p> <p> <span style="font-size: 10.5pt;line-height: 1.5">访问时间:<span style="color:#ff0000">-atime</span>:[+|-] </span></p> <p><span style="font-size: 14px;line-height: 21px"> </span><span style="font-size: 10.5pt;line-height: 1.5">修改时间</span><span style="font-size: 10.5pt;line-height: 1.5">:<span style="color:#ff0000">-mtime</span>:[+|-] </span></p> <p><span style="font-size: 10.5pt;line-height: 1.5"> </span><span style="font-size: 10.5pt;line-height: 1.5">改变时间:</span><span style="font-size: 10.5pt;line-height: 1.5"><span style="color:#ff0000">-ctime</span>:[+|-]</span></p> <p><span style="font-size: 10.5pt;line-height: 1.5"> </span><span style="font-size: 10.5pt;line-height: 1.5">计算公式如下:</span></p> <p><span style="font-size: 10.5pt;line-height: 1.5"> #: # <= x <= #+1</span></p> <p><span style="font-size: 10.5pt;line-height: 1.5"> -#:x < #</span><span style="font-size: 10.5pt;line-height: 1.5"> </span></p> <p><span style="font-size: 14px;line-height: 21px"> </span><span style="font-size: 10.5pt;line-height: 1.5">+#:x >= #+1</span></p> <p><span style="font-size: 10.5pt;line-height: 1.5"></span></p> <p>例:查找3天前的文件(大于等于3并且小于4),如下图:</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160732-84.gif" border="0" /><img src="//cto.wang/usr/uploads/2016/07/20160703160735-56.png" title="1440936461185796.png" alt="blob.png" /></p> <p><span style="font-size: 10.5pt;line-height: 1.5"><span style="font-size: 10.5pt;line-height: 1.5">b.以</span><span style="color:#ff0000;font-size: 10.5pt;line-height: 1.5">分钟</span><span style="font-size: 10.5pt;line-height: 1.5">为单位进行查找</span><br /></span><span style="font-size: 10.5pt;line-height: 1.5"><span style="font-size: 10.5pt;line-height: 1.5"> </span><span style="font-size: 10.5pt;line-height: 1.5"> 访问时间:<span style="color:#ff0000">-amin</span>:[+|-] </span></span></p> <p></p> <p><span style="font-size: 10.5pt;line-height: 1.5"> 修改<span style="font-size: 10.5pt;line-height: 1.5">时间:<span style="color:#ff0000">-mmin</span>:[+|-] </span></span></p> <p><span style="font-size: 10.5pt;line-height: 1.5"></span></p> <p><span style="font-size: 10.5pt;line-height: 1.5"> </span><span style="font-size: 10.5pt;line-height: 1.5">改变时间:</span><span style="font-size: 10.5pt;line-height: 1.5"><span style="color:#ff0000">-cmin</span>:[+|-]</span><span style="font-size: 10.5pt;line-height: 1.5"> </span></p> <p>例:查找5分钟之内访问过的文件,如下图:</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160732-84.gif" border="0" /><img src="//cto.wang/usr/uploads/2016/07/20160703160735-75.png" title="1440936469403163.png" alt="blob.png" /></p> <p>13、根据权限查找</p> <p>命令格式:<span style="color:#ff0000">-perm</span>[+|-]MODE</p> <p> MODE:与MODE精确匹配,示例如下图:</p> <p> <img src="/upload/roewwcrthxm.png" title="1440936479550474.png" alt="blob.png" /></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160732-84.gif" border="0" /></p> <p> +MODE:任何一类用户的权限只要能包含对其指定的任何一位权限即可,例如555(r-xr-xr-x)这种情况无论属主属主其他用户只要拥有r或x任何一种权限即可匹配,示例如下图:</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160732-84.gif" border="0" /><img src="/upload/tsvtqt3inmk.png" title="1440936486657979.png" alt="blob.png" /></p> <p> </p> <p> -MODE:每一类用户的权限都包含对其指定的所有权限即可,例如222(-w- -w- -w-)这种情况无论属主属主其他用户必须都包含写权限才能匹配,示例如下图:</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160732-84.gif" border="0" /><img src="/upload/tppf3q5huqq.png" title="1440936493551646.png" alt="blob.png" /><span style="font-size: 10.5pt;line-height: 1.5"><br /></span></p> <p>14、处理动作</p> <p>参数说明:</p> <p> -print:默认动作,打印至屏幕</p> <p> -ls:显示找到的文件的详细属性</p> <p> -exec COMMAND {} \; <span style="color:#ff0000">注:find配合-exec时如果要删除文件,执行后不确认直接删除(所有命令都不提醒)</span></p> <p> -ok COMMAND {} \; <span style="color:#ff0000">注:find配合-ok时如果要删除文件,执行后需确认后才会删除(其他命令也会提醒)</span></p> <p></p> <p>-exec示例如下图:</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160732-84.gif" border="0" /><img src="/upload/vwb0bey5qfp.png" title="1440936502974484.png" alt="blob.png" /></p> <p><span style="color:#ff0000">注意:find命令会一次性找到所有符合条件的文件,并一同传递给后面的命令,但有些命令不能接受过长的参数。解决办法:</span></p> <p><span style="color:#ff0000">find|xargs COMMAND,如下图:</span></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160732-84.gif" border="0" /><img src="/upload/qe2fnkc1gq5.png" title="1440936511269596.png" alt="blob.png" /></p> <p>补充:实现查找文件后给文件改名,如下图:</p> <p>参数说明:-i 选项告诉 xargs 用每项的名称替换 {}</p> <p>-t 选项指示 xargs 先打印命令,然后再执行(想详细了解xargs命令执行过程可以加此参数)</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160732-84.gif" border="0" /><img src="/upload/53byuv0v33w.png" title="1440936547359588.png" alt="blob.png" /></p> <p></p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信