1、locate #非精确查找,非时时查找,但是由于可以生成数据库,updatedb,所以查找速度块。
用法:locate command
2、find #查找利器,精确查找,实时查找
用法:find path 查找条件 执行的动作
1)查找条件:
-name "filename" #"filename" 可以匹配通配符
举例:find /etc/ http*
-iname "filename" #忽略filename的大小写
-user "用户名"
举例:[root@www ~]# find /home/ -user redhat
/home/redhat
-group "组名" #用法同 -user
-uid "用户的id" #根据用户的id来进行查找
-gid "组id"
-nouser #查找没有属主的文件,注:当我们删除用户的时候,家目录的文件还在,这时候会成为没有属主的文件
-nogroup #查找没有属组的文件
-type
f #普通文件
d #目录文件
l #连接文件
b #块设备文件
c #字符文件
s #socket文件
p #管道文件
-size +n|-n|n (K,M,G)
+n #表示大于多少字节的文件。想到这里我突然想问自己一下,平时我们说的带宽为100M,实际上我们是100Mbps(bits per second),是bit计算的。但是我们下载的速度是按照Byte计算的,所以100M/8 才是真实的速度。额,困扰了我好久,今天终于了解了。当然前面的只是理论值。
-nM #小于nM的文件。
nM #等于nM的文件,当然查找的时候可能会有出入,这是因为1-2M,系统看成是2M的,四舍五入吗。还需要待查看
-atime
-mtime
-ctime
上面的几个时间戳都可以接+n,-n,n。可以想想为一条线。n表示当前点,+n,表示n之前的时间,-n表示,n到今天的时间算起。
-perm
mode #这个应该很简单,精确匹配
-mode #这个是对于出现的属性精确匹配,没出现过的属性模糊匹配。
举例:-111,表示在属主,属组和others上必须有x权限,其他的模糊匹配,当然如果是0的话,就模糊匹配。比如110,在others上可以为任意属性,但是属主和属组上必须同时具备x权限为。
+mode #这个和上面的类似,但是有个不同点是前面的必须同时具备,这个只需要具备一条属性就匹配。
执行的动作 -exec 或者 | xargs,后者更为通用。记得好像-exec不同后接长命令选项。
举例: find /tmp/test.tar.gz -type f | xargs rm -rf {} \; #有点类似于正则的后置引用