shell脚本(二)

#find查找文件,以可根据时间、名称、uid、gid、权限、大小等条件查找

#-amin -10:10分钟之内访问过的文件或目录;+10:10分钟之前访问过的文件或目录.时间单位为分钟。

#查找10分钟之前30分钟之内访问过的文件或目录

find /home -amin +10 -a -amin -30

shell脚本(二)

#-atime -2:48小时内访问过的文件或目录;+2:48小时之前访问过的文件或目录。

#时间单位为24小时,即2*24=48小时。

#查找1天之前3天之内访问过的文件或目录

find /var/log/ -atime +1 -a -atime -30 -exec ls -l {} \;

shell脚本(二)

#-cmin  -2:2分钟之内修改过权限属性的文件或目录;+2:2分钟之前修改过权限属性的文件或目录.时间单位为分钟。

#查找2分钟之前60分钟之内修改过权限的文件或目录

find /home -cmin +2 -a -cmin -60

shell脚本(二)

#-ctime -2:48小时内修改过权限属性的文件或目录;+2:48小时之前修改过权限属性的文件或目录。时间单位为24小时,即2*24=48小时。

#查找3天之前5天之内修改过权限属性的文件或目录

find /var/log/ -ctime +3 -a -ctime -5 -exec ls -l {} \;

shell脚本(二)

#-mmin  -2:2分钟之内修改过内容的文件或目录;+2:2分钟之前修改过内容的文件#或目录,时间单位为分钟。

#查找1分钟之前30分钟之内修改过文件内容的文件或目录

find /home -mmin +1 -a -mmin -30

shell脚本(二)

#-mtime -2:48小时内修改过内容的文件或目录;+2:48小时之前修改过内容的文件或目录。时间单位为24小时,即2*24=48小时。

#查找1天之前30天之内修改过内容的文件或目录

find /home -mtime +1 -a -mtime -30

shell脚本(二)

#-uid (+或-)数值(0):-10:表示小于10;+1:表示大小于;没有+-5:表示等于5

#在当前目录下查找uid=0的文件或目录

find . -uid 0

shell脚本(二)

#-gid (+或-)数值(0):-10:表示小于10;+1:表示大小于;没有+-5:表示等于5

#在当前目录下查找gid=0的文件或目录

find . -gid 0

shell脚本(二)

#-name 查找文件或目录名称:可以使用*、+匹配符

#查找/var/log/下所有以.log结尾文件

find /var/log/*.log

shell脚本(二)

#查找当前目录下uid>0,gid<2223的文件或者目录

find . -uid +0 -gid -2223

shell脚本(二)

#-perm mode:

#-数值:mode转换成二进制,四个值中二进制位有1的地方一定要匹配,如0700(111000000)

#0700-7777都与之匹配,可以理解为大于0700的都匹配

#查找权限大于744的文件或目录,因为mode第1个为7,全为1,所以所有属主

#权限不为7的都不会符合,同时群组权限数值为4、5(4+1)、7(4+2+1),相与有1

#符合要求,其他权限要求与群组权限一样要求,所以test目录符合要求

find . -perm -744

shell脚本(二)

#+数值:mode转换成二进制,四个值中二进制位任何有1的地方

#有其中1个值相与等于1就可以了

#+001与只要最后一位权限数值是1、5(=4+1)、7(=4+2+1)的权限都匹配

#查找包含有权限值001的文件或目录

#user3、user4和user5权限与001相与,都没有1,所以不符合要求,而ddd

#其他权限中相与有1,所以符合要求

#+mode可以理解为包含有此mode模式的都符合要求

find . -perm +001

shell脚本(二)

shell脚本(二)

#mode:表示等于。

#查找权限值等于001的文件或目录

find . -perm 001

shell脚本(二)

#-size 文件大小:-数值表示小于,+数值表示大于,没有+-表示等于。

#查找大于10k小于30k的文件或目录

find . -size +10 -size -30k

shell脚本(二)

#查找大小等于4k的文件或目录,k可以换成m或者g

find . -size 10k

shell脚本(二)

#-empty:查找大小为0字节文件,或目录下没和任何子目录或文件的空目录

shell脚本(二)

#-exec shell命令:对查找到的文件或目录执行shell命令

#查找大于10k小于30k的文件或目录,并将它复制到/tmp

find . -size +10k -size -30k -exec cp -rf {} /tmp \;

shell脚本(二)

#whereis,-b:只查找二进制文件,-u:查找不 包含指定类型的文件,-B:只在指定目

#录查找二进制文件,-M:只要指定目录下查找帮助文件

#-S:只在指定目录查找源码文件

#whereis只会在$PATH路径下搜索

whereis ls

#aaa文件在/home下,并不在$PATH中,所以搜索不到

whereis aaa

shell脚本(二)

#which,查找可执行文件,如果是别名命令时会列出具体另外信息

which ls

shell脚本(二)

#locate,在已建立的档案及路径的数据库中搜索,一般搜索前先更改一下数据库

#如果不使用updatedb更新,那么在系统启动完毕后新建立的文件是无法搜索到的

#最小化安装是没有locate命令的,yum -y install mlocate安装

#它依赖/var/lib/mlocate/mlocate.db数据库

locate one_day

#新建一个文件abcd123456,再查找,因为没有updatedb,所以是找不到文件的

touch abcd123456

locate abcd123456

shell脚本(二)