(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