Loading... <p> 前言:Linux一切皆文件,在linux的系统中如果我们需要找到所需的文件,除了一步一步慢慢找,还有一种办法就是要使用Linux中查找文件工具命令,能让我们很快定位到我们所需的文件。所以我们必须要学好文件查找工具</p> <hr /> <p>一、首先我们先要了解文本搜索和文件查找的区别</p> <p> 文本搜索:根据用户所指定的PATTERN、字符对文本文件中的内容进行过滤和匹配。常用的工具有"grep"、"egrep"、"fgrep"</p> <p> 文件查找:根据文件的各个属性去匹配相对应的文件。常用工具有"find"、"locate"</p> <hr /> <p>二、对于文件查找的工具区别</p> <p> 首先我们要了解文件查找的2中方法</p> <p> 1、实时查找:是遍历对所有文件进行条件匹配。常用命令:"find"</p> <p> 优点:能精确查找和匹配,而且能实时查找到最新的文件。</p> <p> 缺点:速度比较慢</p> <p> 2、非实时查找:是根据索引数据库进行查找。常用命令:"locate"</p> <p> 优点:查找速度快</p> <p> 缺点:①非精确查找,而且是属于模糊查找</p> <p> ②必须依赖索引数据库才可以,而且在构建索引时相当占用时间和资源</p> <p> 小贴士:索引数据库的创建更新是在系统空闲时并使用每日任务进行的,所以无法实时找到最新的文件。若想立即更新索引数据库,可以执行命令:updatedb</p> <hr /> <p>三、find 用法</p> <p> find [option] …[查找路径] [查找条件] [处理动作]</p> <p> 各参数的默认值:</p> <ul class=" list-paddingleft-2"> <ul class=" list-paddingleft-2"> <ul class="custom_dash list-paddingleft-1"> <li class="list-dash list-dash-paddingleft"> <p>查找路径:默认为当前路径</p> </li> <li class="list-dash list-dash-paddingleft"> <p>查找条件:默认为指定路径下的所有文件</p> </li> <li class="list-dash list-dash-paddingleft"> <p>处理动作:默认为显示在屏幕上</p> </li> </ul> </ul> </ul> <p style="margin-top: 10px"> 1、查找路径</p> <p style="margin-top: 10px"> 1.1、绝对路径</p> <pre class="brush:bash;toolbar:false"> [root@eric ~]# find /tmp/test "*p*"</pre> <p> 1.2、相对路径</p> <pre class="brush:bash;toolbar:false"> [root@eric tmp]# find ./test "*p*"</pre> <p style="margin-top: 15px"> 2、查找条件</p> <p> 2.1、 -name "指定文件名称"</p> <p> 备注:支持使用globbing(通配符)字符</p> <p> *:任意长度的任意字符</p> <p> ?:任意单个字符</p> <p> []:指定范围内的任意单个字符</p> <p> [^]:指定范围外的任意单个字符</p> <pre class="brush:bash;toolbar:false"> [root@eric tmp]# find /etc/ -name "p*[0-9]*" 表示在/etc/路径下找包含"p"开头并且包含"数字"的所有文件</pre> <p style="margin-bottom: 10px;margin-top: 10px"> 2.2、-iname "指定文件名称" :查找时不区分大小写,默认是区分大小写的。</p> <pre class="brush:bash;toolbar:false"> [root@eric tmp]# find /etc/ -iname "p*"</pre> <p style="margin-top: 10px;margin-bottom: 10px"> 2.3、-user USERNAME :查找时根据文件属主查找</p> <p style="margin-top: 10px;margin-bottom: 10px"> 2.4、-group GROUPNAME:查找时根据文件的属组查找</p> <pre class="brush:bash;toolbar:false"> [root@eric tmp]# find /home/ -user user1</pre> <p style="margin-top: 10px;margin-bottom: 10px"> 2.5、-uid UID : 查找时根据文件的属主的UID查找</p> <p style="margin-bottom: 10px"> 2.6、-gid GID :查找时根据文件的属组的GID查找</p> <pre class="brush:bash;toolbar:false"> [root@eric tmp]# find /home/ -gid 600</pre> <p> 2.7、-nouser:查找没有属主的所有文件</p> <p> 2.8、-nogroup:查找没有属组的所有文件</p> <pre class="brush:bash;toolbar:false"> [root@eric tmp]# find / -nouser</pre> <p> 2.9、-type TYPE :根据文件类型查找</p> <p> -f:普通文件</p> <p> -d:目录文件</p> <p> -l:符号链接</p> <p> -b:块设备</p> <p> -c:字符设备 </p> <p> -s:套接字文件</p> <p> -p:命名管道</p> <pre class="brush:bash;toolbar:false"> [root@eric tmp]# find /etc/ -type d -name "p*[0-9]*"</pre> <p> 2.10、-size [ + | – ]#UNIT:根据文件大小来查找</p> <p> UNIT:代表的是单位。常用单位;k,M,G</p> <p> # :代表的是数字</p> <p> + :代表的是大于</p> <p> – :代表的是小于 </p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703180359-83.png" title="1435973445678872.png" alt="find -size 原理.png" width="540" height="204" style="width: 540px;height: 204px" /></p> <p> 例子:以 # = 9 , UNIT = k</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703180359-3.png" title="1435973466564549.png" alt="测试find -size.png" width="545" height="401" style="width: 545px;height: 401px" /></p> <p> 2.11、-perm [ + | – ] MODE :根据文件权限查找</p> <p> MODE:代表用户对该文件的权限,即 r(4) ,w(2) ,x(1)</p> <p> MODE:代表与MODE权限<em><strong>都要精确匹配</strong></em></p> <p> +MODE:代表任何一类用户的权限只要包含对其指定的<em><strong>任意一个权限</strong></em>满足即可 </p> <p> -MODE:每一类用户指定的权限都被必须被<strong>包含,并且是完全包含</strong></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703180359-96.png" title="1435975095497087.png" alt="find -perm.png" width="546" height="333" style="width: 546px;height: 333px" /></p> <p> 2.12、根据时间戳查找</p> <p> 2.12.1、以"天"为单位</p> <p> -atime [ + | – ] # :根据访问时间进行查找</p> <p> -mtime [ + | – ] # :根据修改时间进行查找 </p> <p> -ctime [ + | – ] # :根据状态改动时间查找</p> <p> 2.12.2、以"分钟"为单位<br /> -amin [ + | – ] # :根据访问时间进行查找</p> <p> -mmin [ + | – ] # :根据修改时间进行查找 </p> <p> -cmin [ + | – ] # :根据状态改动时间查找</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703180400-4.png" title="1435975589771116.png" alt="find -atime原理.png" width="554" height="207" style="width: 554px;height: 207px" /></p> <p> 例子: 以 # 为 4 使用atime</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703180400-7.png" title="1435975763138954.png" alt="find atime 练习.png" width="553" height="156" style="width: 553px;height: 156px" /></p> <p> 代表的意思:</p> <p> +4 :代表大于等于5天前访问过的文件</p> <p> -4 :代表小于等于4天前访问过的文件</p> <p> 4 :代表4 ~ 5 这一天访问过的文件</p> <p></p> <p> 2.13、根据组合条件查找 </p> <p> 指是在条件语句语句中执行逻辑运算</p> <p> 与:-a 指必须同时满足(默认值就是-a,所以-a可以不填)</p> <p> 或:-o 指满足其中一个即可</p> <p> 非:-not \ ! 指条件取反</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703180400-42.png" title="1435977488102074.png" alt="find组合.png" width="580" height="294" style="width: 580px;height: 294px" /></p> <p> 小贴士:上面例子最后的一个例子也可以使用下面的方法</p> <pre class="brush:bash;toolbar:false"> [root@eric test1]# find ./ -not \( -iname "*r*" -o -group tuser602 \)</pre> <p> 3、处理动作</p> <p> 3.1、-print: 默认处理动作,显示在在屏幕</p> <p> 3.2、-ls :相当于 ls -l (备注:在使用于组合条件时会有点问题)</p> <p> 3.3、-exec :运行命令,对查找到的文件执行某个命令</p> <p> -exec COMMAND{} \; <strong> (备注: \; 表示结束 {} 表示引用了文件的本身)</strong></p> <pre class="brush:bash;toolbar:false"> [root@eric test1]# find ./ -perm -001 -exec chmod o-x {} \; //将权限符合 -001的所有文件权限改成 o-x [root@eric test1]# find ./ -perm +200 -a -type f -a -not -name "*.*" -exec mv {} {}.txt \; //将当前路径下没有后缀的所有文件都加上.txt后缀</pre> <p> 3.4、-ok :使用交互式执行命令 </p> <p> -ok COMMAND {} \;</p> <p> 小贴士:find 一次性查找所有符合条件的所有文件,并一同传递给-exec或-ok后面所指定的命令;但是,有些命令不能接受过长的参数:因此这时应该使用另一种方法</p> <p> find | xargs COMMAND 意思是找到一个处理一个</p> <pre class="brush:bash;toolbar:false"> [root@eric test1]# find /tmp -name core -type f -print | xargs /bin/rm -f</pre> <hr /> <p>四、总结</p> <p> find 的使用格式</p> <p> find [查找路径] [查找条件] [处理动作]</p> <p> 查找路径:绝对路径,相对路径 </p> <p> 查找条件:-name , -iname , -user , -group , -uid , -gid , -nouser , -nogroup , -size ,-perm</p> <p> 根据时间戳查找: -mtime , -ctime , atime , -amin , -mmin , -cmin</p> <p> 根据组合条件查找: -a , -o , -not , !</p> <p> 处理动作: -print , -ls , -exec , -ok </p> <p></p> <p></p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信