find [PATH] [option] [action]
option:
1,与时间有关的选项,共有-atime,-ctime与-mtime,以-mtime说明
-mtime n:n为数字,意义为在n天之间的【一天之内被更改过内容的文件】
-mtime +n:列出在n天之前(不含n天本身)被更改过内容的文件名
-mtime -n:列出在n天之内(含n天本身)被更改过内容的文件名
-newer file:file为一个存在的档案,列出比file还要新的档案档名
范例一:将过去系统上面24小时内有更改过内容(mtime)的文件列出
[ ~]# find / -mtime 0
如果是三天前的24小时内 find / -mtime 3
范例二:寻找/etc底下的文件,如果文件日期比/etc/passwd新就列出
[ ~]# find /etc/ -newer /etc/passwd
+4代表大亍等亍5天前癿檔名:ex> find /var -mtime +4
-4代表小亍等亍4天内癿档案档名:ex> find /var -mtime -4
4则是代表4-5那一天癿档案档名:ex> find /var -mtime 4
2,与使用者或组名有关的参数
-uid n:n为数字,这个数字是用户的账号ID,亦即UID,这个UID是 记录在/etc/passwd里面与账号名称对应的数字
-gid n:n为数字,这个数字是组名的ID,亦即GID,这个GID记录在/etc/group
-user name:name为使用者账号名称
-group name:name为组名
-nouser:寻找文件的拥有者不存在/etc/passwd的人
-nogroup:寻找文件的拥有群组不存在与/etc/group
当你自行安装软件时,很可能该软件的属性当中并没有文件拥有者
练习三:搜寻/home底下属于wpf的文件
[ ~]# find /home/ -user wpf
练习四:搜寻系统中不属于任何人的文件
[ ~]# find / -nouser
3,与档案权限及名称有关的参数:
-name filename:搜寻文件名为filename的档案
-size [+-] SIZE:搜寻比SIZE还要大(+)或小(-)的档案,这个SIZE的规格有:
c:代表byte,k代表1024bytes。所以比50KB还要大的文件,就是-size +50k
-type TYPE:搜寻文件的类型为TYPE的,类型主要有:一般正规文件(f)装置文件(b,c),目录(d),连洁档(l),sockets(s),及FIFO(p)
-perm mode:搜寻文件权限【刚好等于】mode的档案,这个mode类似chmod的属性值,
举例来说,-rwsr-xr-x的属性为4755
-perm -mode:搜寻文件权限【必须要全部囊括mode的权限】的文件,
举例:我们要搜寻-rwxr--r--,亦即0744的文件,使用-perm -0744
当一个文件权限为-rwsr-xr-x,亦即4755时,也会被列出来,
因为-rwsr-xr-x的属性已经囊括了-rwxr--r--的属性了
-perm +mode:搜寻文件权限【包含任一mode的权限】的文件,举例来说:
-rwxr-xr-x,亦即-perm +755时,但一个文件属性为-rw-------也会被列出来,因为他有-rw....的属性存在
练习五:找出文件名为passwd这个文件
[ ~]# find / -name passwd
练习六:找出/var目录下,文件类型为socket的文件名有哪些?
[ ~]# find /var/ -type s
练习七:搜寻文件名中含有SGID或SUID或SBIT的属性
[ ~]# find / -perm +7000
练习:找出/bin /sbin这俩个目录只要有SUID或SGID就列出该文件
[ ~]# find /bin /sbin -perm +6000
4,额外可进行的动作:
-exec command:command为其他指令,-exec后面可再接额外的指令来处理搜寻到的结果
-print:将结果打印到屏幕上,这个动作是预设动作
练习八:将上个练习找到的档案使用ls -l列出来
[ ~]# find /bin/ /sbin/ -perm +6000 -exec ls -l {} \;
注意到,那个-exec后面的ls -l就是额外的指令,指令不支持命令别名,
所以仅能使用ls -l 不可以使用ll
该范例中特殊的地方有 {} 以及 \; 还有 -exec 这个关键词,这些东西的意义为:
{} 代表的是『由 find 找到的内容』,如上图所示,find 的结果会被放置到 {} 位置中;
-exec 一直到 \; 是关键词,代表 find 额外动作的开始 (-exec) 到结束 (\;) ,在这中间的就是 find 指令内的额外劢作。 在本例中就是『 ls -l {} 』啰!
因为『 ; 』在 bash 环境下是有特殊意义的,因此利用反斜杠来跳脱。
练习九:找出系统中,大于1MB的文件
[ ~]# find / -size +1M
find可以利用通配符
[ ~]# find /etc/ -name '*httpd*'