查找文件which locate find

(1)which:查找命令文件路径

which ls            //命令的路径查找是根据PATH环境变量
whereis ls 
echo $PATH          //打印PATH环境变量

(2)locate:查找任意文件

locate查找文件是查询数据库:/var/lib/mlocate/mlocate.db
    计划任务:每天自动更新数据库,/etc/cron.daily/mlocate.cron
    手工更新数据库:updatedb 
    安装:yum provides locate          //查找locate命令是哪个rpm包提供的
         yum install mlocate-0.26-8.el7.x86_64 -y
    locate ifcfg-eth0

(3)find:查找任意文件,牛逼工具

语法:find [options] [path...] [expression] [action]

1)根据文件名查找

find /etc -name "ifcfg-ens33"               // etc目录下查找文件ifcfg-ens33
find /etc ! -name "ifcfg-ens33"             //取反,etc目录下查找文件不是ifcfg-ens33的文件,
find /etc -iname "ifcfg-ens33"              //-i:忽略大小写
find /etc -iname "ifcfg-ens*"               //使用通配符,*任意字符

2)根据文件大写查找

find /etc/ -size +5M                        //etc目录下查找大于5M的文件
find /etc/ -size 5M                         //etc目录下查找等于5M的文件
find /etc/ -size -5M                        //etc目录下查找小于5M的文件   
find /etc/ -size +5M -ls                    //etc目录下查找大于5M的文件,-ls是找到后的处理动作,不是ls命令

3)指定查找的目录深度

-maxdepth levels
-mindepth levels 
find / -maxdepth 4 -a -name "ifcfg-*"       //目录深度4级下查找ifcfg-开头的文件,-a表示与,

4)按时间查找(atime,ctime,mtime)

find /etc -mtime +5                         //修改时间超过5天
find /etc -mtime -5                         //修改时间等于5天
find /etc -mtime -5                         //修改时间5天以内

5)按文件属主丶属组查找

find /home -user jack                       //属主是jack的文件
find /home -group hr                        //用户组是hr的文件
find /home -user jack -group hr 
find /home -user jack -a  -group hr 
find /home -user jack -o  -group hr 
find /home -nouser                          //文件没有属主
find /home -nogroup                         //文件没有用户组
find /home -nouser -o nogroup               

6)文件类型

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

7)按文件权限

find . -perm 644 -ls                        //权限精确匹配
find . -perm -600 -ls                       //属主只要有读权限就行
find . -perm -222 -ls                       //ugo只要有w权限
find /usr/bin /usr/sbin -perm -4000 -ls     //suid权限
find /usr/bin /usr/sbin -perm -2000 -ls     //sgid权限
find /usr/bin /usr/sbin -perm -1000 -ls     //sticky权限
-表示模糊匹配

8)找到后的动作:默认动作是-print

-print 
-ls
-delete
-exec           //后面跟自定义的shell命令
-ok             //后面跟自定义的shell命令
find /etc -name "ifcfg*" -print                     //打印文件名
find /etc -name "ifcfg*" -ls                        //相当于ls -l
find /etc -name "ifcfg*" -exec cp -rf {} /tmp \;    
find /etc -name "ifcfg*" -ok cp -rf {} /tmp \;
find /etc -name "ifcfg*" -exec rm -rf {} \;
find /etc -name "ifcfg*" -delte 
find /etc -name "ifcfg*" | xargs rm -rf 

9)find与xargs结合

find /etc -name "ifcfg*" | xargs -I {}  cp -rf {} /var/tmp          //复制文件
find /etc -name "ifcfg*" | xargs rm -rf                             //删除文件

10)find高级用法

mkdir dir1 
touch dir1/file{1..10}
find dir1/ ! -name "file1"                                          //取反
find dir1/ -name "file1" -o -name "file5" -ls                       //只能显示1个文件
find dir1/ \( -name "file1" -o -name "file5" \) -ls                 //同时显示两个文件
find dir1/ \( -name "file1" -o -name "file5" \) | xargs rm -rf

猜你喜欢

转载自www.cnblogs.com/lovelinux199075/p/9030513.html