find指令是我们在使用Linux系统时比较常用并且十分重要的一条指令。它的指令格式如下:
find pathname [-options] [...] ***
(查找方式有很多,下面只剖析了几种常用的)
-mtime
按照文件修改时间进行查找,mtime为文件的时间参数,指文件最近的一次修改时间。不了解的可以看下面这篇博客:http://blog.csdn.net/llzk_/article/details/53932580
eg1:
find test -mtime 0
0就代表目前的时间,意思是从现在开始到24小时以前。这条指令的意思就是在test目录中查找从现在开始到24小时以前这个时间段内修改过的文件的文件名。
如果我想查找远一点的文件呢?比如现在是12月30号,我想在test目录下查找4天前12月26号那一天24小时内修改过的文件。
24小时,1天,这个范围有点太小了,我想在test目录下查看从现在开始到4天前,这4天内修改过的文件。
再远一点,我要看test目录下从现在开始,4天前所有修改过的文件。
find test -mtime +4
因为test是我为了测试而创建的目录,里面文件较少,你可以试试在根目录下查找,效果爆炸!
find / -mtime +4
从上面的测试中可以看出,加上+-号会得到不同的结果。可以参考下面的时间轴来区分。
-uid n
按照用户账号的ID来查找。n即为用户账号ID。这个ID一般是被记录在/etc/passwd里面与账号名称对应的数字。
eg:
在/etc目录下查找用户ID为500的文件名。
find /etc -uid 500
-gid n
按照用户组名的ID来查找,n为用户组的ID。gid一般被记录在/etc/group中。
eg:
在/etc目录下查找用户组ID为500的文件名。
find /etc -gid 500
-user name
按照用户的名称来查找;
eg:
在test目录下查找用户名为lzk的文件。
-group name
按用户组的名称进行查找。
eg:
在test目录下查找用户组名为gruop的文件。
-nouser
寻找用户(所有者)不在/etc/passwd中的人
eg:
在/etc目录下查找不属于任何人的文件。
find /etc -nouser
-nogroup
寻找文件的用户组不存在于/etc/group中的文件。
eg:
在/etc目录下查找不属于任何用户组的文件。
为什么会存在不属于任何用户和用户组的文件?因为当你自行安装软件时,很可能软件的属性当中并没有文件所有者或者你将某个用户(用户组)删除了,但是它的文件还在。这是可能的。所以在这时候就可以用着两条指令来查看这些不太正常的文件。
-size [+-]SIZE
查找文件大小为SIZE的文件 SIZE;
查找文件大小大于SIZE的文件 +SIZE;
查找文件大小小于SIZE的文件 -SIZE;
size的单位有两个,一个是‘c’,代表byte。另一个是‘k’,代表1024bytes,为1KB。不加单位的话应该默认的是block(块,一个块为512bytes)。
eg:
在/etc目录下查找大小为50byte的文件。
find /etc -size 50c
在/etc目录下查找大小大于50bytes的文件。
find /etc -size +50c
在etc目录下查找大小小于50bytes的文件
find /etc -size -50c
-type TYPE
按照文件的类型查找,类型主要有‘f’一般正规文件,‘b’,‘c’设备文件,‘d’目录,‘l’链接文件,‘s’socket,‘p’FIFO等属性。
eg:
查找test目录下的一般文件
find test -type f
-perm [+-]mode
按文件的权限查找,查找文件权限刚好等于mode的文件。
如mode777表示“-rwxrwxrwx”,755表示“-rwxr-xr-x
”。(关于文件的权限我后序会以另一片博文给出)
查找文件权限等于mode的文件—– mode
eg:
find test -perm 755
查找文件权限包括mode的文件—- -mode
什么叫包括?假如mode等于600,即”-rw——-“,我现在有一个文件A的权限mode等于755(”-rwxr-xr-x“),那么文件A也会被查找出来。因为”-rwxr-xr-x“属性包含了”-rw——-“。
eg:
find test -perm -700
查找文件权限包含”任一mode的权限“的文件—- +mode
假设我要查找的mode为755(”-rwxr-xr-x“), 现在有一文件B权限为”—-r-x—“。这个文件是可以被查到的。因为文件B有”..r-x..“。
eg:
find test -perm +777
find指令的特殊功能就是可以和其他指令搭配使用。就是最前面所描述的”***“所代表的内容。
格式为:
find pathname [-option] [...] -exec [...] {} \;
[…] 表示搭配的指令;
eg:
在test目录下查找所有者为lzk的所有文件,并以ls -l(此种搭配不支持命令别名,所以‘ll’是不行的)的形式输出至屏幕。
find test -name test -exec ls -l {} \;
与通配符搭配使用
eg:
在test目录下查找所有名字包含”te“的文件。
find test -name '*te*'