find 语法: find [PATH] [option] [option] 参数: 1与时间有关的参数:共有-atime , -ctime , -mtime -atime n :将n*24小时内存取过的的文件列出来 -ctime n :将n*24小时内改变、新增的文件或者目录列出来 -mtime n :将n*24小时内修改过的文件或者目录列出来 -newer file :把比file还要新的文件列出来 -mtime n :n为数字,在n天之前的“一天之内”被更改过的文件 -mtime +n :列出在n天之前(不含n天本身)被更改过的文件名 -mtime -n :列出在n天之内(含n天本身)被更改过的文件名 -newer file :file为一个存在的文件,列出比file还要新的文件名 范例: 将过去系统上面24小时内有改动(mtime)的文件列出 find / -time 0 0代表目前的时间,所以从现在开始到24小时前 将3天前的24小时内有改动的文件列出 find / -mtime 3 find /etc -newer /etc/passwd 2用户或用户组名有关的参数: -uid n :n为数字,这个数字是用户的帐号ID,即UID -gid n :n为数字,这个数字是用户组名的ID,即GID -user name :name为用户帐号名称 -group name :name为用户组名 -nouser :寻找文件的所有者不存在/etc/passwd的人 范例: find /home -user yubing 查找home下面属于yubing的文件 find /-nouser 查找系统中不属于任何人的文件(可以找出不太正常的文件) 3与文件权限及名称有关的参数: -name filename :查找文件名为filename的文件 -size [+-] SIZE :查找比SIZE还要大(+)或小(-)的文件。SIZE的规格有: c :代表 byte k :代表1024bytes -type TYPE :查找文件类型为TYPE的,类型主要有: 一般正规文件(f) 设备文件(b,c) 目录(d) 连接文件(l) socket(s) FIFO(p) -perm more :查找文件权限“刚好等于”mode的文件 -perm -more :查找文件权限“必须要全部包括mode的权限”的文件 -perm +more :查找文件权限“包含任一mode的权限”的文件 范例: find / -name passwd find /var -type s find / -perm +7000 7000就是----s--s--t +7000只要含有s或t的就列出来 -7000表示含有s,s,t是三个权限 4其他可进行的操作:
-exec command :command为其他命令,-exec后面可再接其他的命令来处理查找到的结果 -print :将结果打印到屏幕上,这个操作是默认操作 范例: find /size +1000k 命令实践: [iyunv@yubing ~]# cd /tmp [iyunv@yubing tmp]# find / -name "yubing" /tmp/yubing /var/spool/mail/yubing /root/yubing [iyunv@yubing tmp]# find / -name "*yubing*" /tmp/yubing /var/spool/mail/yubing /home/yubing1 /root/yubing.txt2 /root/yubing /root/yubing.txt /root/yubing.txt1 [iyunv@yubing tmp]# [iyunv@yubing tmp]# ll -a total 44 drwxrwxrwt 5 root root 4096 Apr 24 20:45 . drwxr-xr-x 25 root root 4096 Apr 24 16:53 .. drwxrwxrwt 2 root root 4096 Apr 24 16:53 .ICE-unix drwxr-xr-x 7 root root 4096 Oct 28 2011 oldboy drwx------ 2 root root 4096 Apr 24 20:38 ssh-oCnchs3278 -rw-r--r-- 1 root root 0 Apr 12 07:11 yubing [iyunv@yubing tmp]# echo "yubing student yubing1">yubing 将内容写入yubing文件 [iyunv@yubing tmp]# cat yubing yubing student yubing1 [iyunv@yubing tmp]# find . -type f -exec sed 's/yubing/oldboy/g' {} \; 查找当前目录下所有文件,并把文件中的字符串yubing改为oldboy oldboy student oldboy1 I am oldboy ! mysql qq is 31333741 媄?NwodiI am oldboy ! mysql qq is 31333741 媯专Nyingsui[iyunv@yubing tmp]# 当我们用whereis和locate无法查找到我们需要的文件时,可以使用find,但是find是在硬盘上遍历查 找,因此非常消耗硬盘的资源,而且效率也非常低,因此建议大家优先使用whereis和locate。 locate 是在数据库里查找,数据库大至每天更新一次。 whereis 可以找到可执行命令和man page find 就是根据条件查找文件。 which 可以找到可执行文件和别名(alias)
|