Linux基础文件查找

你说的曾经没有我的故事 提交于 2020-03-07 05:49:54

一、文件查找

(一)、命令文件

[root@linux ~]# chich ls                 //从PATH环境变量
[root@linux ~]# chereis vim

[root@linux ~]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

 

二、任意文件

A. locate (查询的数据库: /var/lib/mlocate/mlocate.db)
计划任务:每天自动更新数据库 /etc/cron.daily/mlocate.cron
              手动更新数据库:updatedb
              # locate ifcfg-eth0
              # locate ifcfg-enp0s25

B. find
find [options] [path...] [expression] [action]

(一)、按文件名:

[root@linux ~]# find /etc -name "ifcfg-eth0"
[root@linux ~]# find /etc -iname "ifcfg-eth0"            //-i忽略大小写
[root@linux ~]# find /etc -iname "ifcfg-eth*"

(二)、按文件大小:

[root@linux ~]# find /etc -size +5M                        //大于5M
[root@linux ~]# find /etc -size 5M
[root@linux ~]# find /etc -size -5M
[root@linux ~]# find /etc -size +5M -ls                    //-ls找到的处理动作

(三)、指定查找的目录深度:

-maxdepth levels
-mindepth levels
[root@linux ~]# find / -maxdepth 3 -a  -name "ifcfg-eth0"  //深度3

(四)、按时间找(atime,mtime,ctime):

[root@linux ~]# find /etc -mtime +5                     //修改时间超过5天
[root@linux ~]# find /etc -mtime 5                        //修改时间等于5天
[root@linux ~]# find /etc -mtime -5                        //修改时间5天以内

(五)、按文件属主、属组找:

[root@linux ~]# find /home -user jack                    //属主是jack的文件
[root@linux ~]# find /home -group hr                    //属组是hr组的文件
[root@linux ~]# find /home -user jack -group hr
[root@linux ~]# find /home -user jack -a -group hr
[root@linux ~]# find /home -user jack -o -group hr[root@linux ~]# find /home -nouser[root@linux ~]# find /home -nogroup[root@linux ~]# find /home -nouser -o -nogroup

(六)、按文件类型:

[root@linux ~]# find /dev -type f                           //f普通
[root@linux ~]# find /dev -type d                         //d目录
[root@linux ~]# find /dev -type l                           //l链接
[root@linux ~]# find /dev -type b                         //b块设备
[root@linux ~]# find /dev -type c                           //c字符设备 
[root@linux ~]# find /dev -type s                           //s套接字
[root@linux ~]# find /dev -type p                         //p管道文件

(七)、按文件权限:

[root@linux ~]# find . -perm 644 -ls
[root@linux ~]# find . -perm -644 -ls
[root@linux ~]# find . -perm -600 -ls
[root@linux ~]# find . -perm -222 -ls                            //全局可写
[root@linux ~]# find /usr/bin /usr/sbin -perm -4000 -ls          //包含set uid
[root@linux ~]# find /usr/bin /usr/sbin -perm -2000 -ls          //包含set gid
[root@linux ~]# find /usr/bin /usr/sbin -perm -1000 -ls          //包含sticky

(八)、按正则表达式:

-regex pattern
[root@linux ~]# find /etc  -regex  ' .* ifcfg-eth [0-9] '
.*       任意多个字符
[0-9]  任意一个数字

[root@linux ~]# find /etc -regex '.*ifcfg-enp0s25'
/etc/sysconfig/network-scripts/ifcfg-enp0s25

[root@linux ~]# find /etc -regex '.*ifcfg-enp0s[0-9]+'
/etc/sysconfig/network-scripts/ifcfg-enp0s25

三、查找之后

  ==找到后处理的动作 ACTIONS: (默认动作-print)==

-print
-ls
-delete
-exec             后面跟自定义的shell命令
-ok                后面跟自定义的shell命令
[root@linux ~]# find /etc -name "ifcfg*"
[root@linux ~]# find /etc -name "ifcfg*" -print
[root@linux ~]# find /etc -name "ifcfg*" -ls
[root@linux ~]# find /etc -name "ifcfg*" -exec cp -rvf {} /tmp \;
[root@linux ~]# find /etc -name "ifcfg*" -ok cp -rvf {} /tmp \;

[root@linux ~]# find /etc -name "ifcfg*" -exec rm -rf {} \;
[root@linux ~]# find /etc -name "ifcfg*" -delete

扩展知识:find结合xargs
[root@linux ~]# find . -name "yang*.txt" |xargs rm -rf         
[root@linux ~]# find /etc -name "ifcfg-eth0" |xargs -I {} cp -rf {} /var/tmp

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!