查找文件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
posted @ 2018-05-12 23:14  你很棒  阅读(355)  评论(0)    收藏  举报