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 {} \; #有点类似于正则的后置引用