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*'