首页 > 代码库 > find文件查找
find文件查找
grep、egrep、fgrep这些指令称为文本查找,即在给定的文本中找出匹配的内容。
而文件查找则是查找系统中的指定的文件是否存在,这些指令有locate和find。
locate:非实时查找,模糊匹配,根据数据库的内容进行搜索,搜索速度较快。
如果要生成或更新locate所使用的数据库的话,可以用updatedb这个指令。
find:是实时、精确查找,支持众多的条件,使用范围较广。
find语法格式: find 查找路径 查找标准 查找到以后的处理动作 说明: 查找路径:默认为当前目录。 查找标准:默认为制定路径下的所有文件。 处理动作:默认为显示。
示例1:
[root@Server3 tmp]# find . ./.esd-0 ./.esd-0/socket ./.ICE-unix [root@Server3 tmp]#
匹配标准: -name ‘filename‘:根据文件名查找,精确查找。区分大小写。 -iname ‘filename‘:文件名匹配不区分大小写。 文件名通配符: *:匹配任意长度的任意字符。 ?:匹配任意一个字符。 []:匹配括号中的任意一个字符。 示例2: [root@Server3 tmp]# find /etc -name passwd /etc/pam.d/passwd /etc/passwd [root@Server3 tmp]# 示例3: [root@Server3 tmp]# find /etc -name ‘*shadow‘ /etc/gshadow /etc/shadow [root@Server3 tmp]# -user:根据文件的拥有者进行查找。 -group:根据文件的属组进行查找。 -uid:根据uid查找。 -gid:根据gid查找。 -nouser:查找没有属主的文件。 -nogroup:查找没有属组的文件。 示例4: [root@Server3 tmp]# find /home -user frame /home/frame /home/frame/.bash_logout /home/frame/.viminfo /home/frame/.bash_profile /home/frame/.bashrc /home/frame/.bash_history /home/frame/.mozilla /home/frame/.mozilla/plugins /home/frame/.mozilla/extensions /home/frame/.gnome2 [root@Server3 tmp]# 示例5: [root@Server3 tmp]# find /home -uid 500 /home/xguest /home/xguest/.bash_logout /home/xguest/.bash_profile /home/xguest/.bashrc /home/xguest/.bash_history /home/xguest/.mozilla /home/xguest/.mozilla/plugins /home/xguest/.mozilla/extensions /home/xguest/.gnome2 [root@Server3 tmp]# -type:根据文件类型查找。 f:普通文件 d:目录 b:块设备文件 c:字符设备文件 s:socket文件 p:pipe管道文件 l:链接文件 示例6: [root@Server3 keepalived-1.1.17]# find /dev -type s /dev/log [root@Server3 keepalived-1.1.17]# ls -l /dev/log srw-rw-rw- 1 root root 0 Jul 12 14:52 /dev/log [root@Server3 keepalived-1.1.17]# -size [[+-]nk|M|G]:根据文件大小查找。如果没有跟上大小,则默认单位为字节。+:表示大于指定的单位,-:表示小于指定大小的文件。 示例7: [root@Server3 keepalived-1.1.17]# find / -size +1G -ls 534397 3593220 -rw-r--r-- 1 root root 3679453184 May 11 15:36 /opt/rhel6.3x64.iso [root@Server3 keepalived-1.1.17]# 组合条件: -a:与 -o:或 -not:非 如果指定了多个找到文件,但是没有指定组合条件,则默认为-a。 示例8: [root@Server3 ~]# find /home -type d -a -user frame /home/frame /home/frame/.mozilla /home/frame/.mozilla/plugins /home/frame/.mozilla/extensions /home/frame/.gnome2 [root@Server3 ~]# find /home -type d -user frame /home/frame /home/frame/.mozilla /home/frame/.mozilla/plugins /home/frame/.mozilla/extensions /home/frame/.gnome2 [root@Server3 ~]# -mtime [[+-]n]:修改时间,文件内容被修改 -ctime [[+-]n]:改变时间,文件属性被修改 -atime [[+-]n]:访问时间,文件被查看 上述n为天数。 -mmin [[+-]n] -cmin [[+-]n] -amin [[+-]n] 上述n表示的是分钟。 +n for greater than n -n for less than n n for exactly n 说明:如果时间为+5,则表示5天/分钟前。如果为-5,则表示5天/分钟内,如果为5,则表示第五天/分钟这一天。 -perm MODE:根据文件的权限匹配。确切的匹配权限,必须为指定的权限。 -perm -MODE:mode中的所有权限位都必须要设置才满足条件。 -perm /MODE:mode中的任何一个权限位被设置都满足条件。 find的动作 -print:默认的动作。 -ls:类似于ls -l的形式显示每一个文件的详细信息。 -ok COMMAND {} \; :要执行的动作,和-exec一样的。{}表示引用找到的文件。\;结束符,为固定格式。 -exec COMMAND {} \; :要执行的动作。 示例: [root@Server3 tmp]# find ./ -perm 640 -ls 541403 0 -rw-r----- 1 root root 0 Jul 12 16:00 ./a [root@Server3 tmp]# 说明:第一个为inode号(541403)。第二个(0)为文件的大小。剩下的就和ls -l一样了。 [root@Server3 tmp]# find ./ -perm 640 -ok chmod 644 {} \; < chmod ... ./a > ? y [root@Server3 tmp]# ls -l a -rw-r--r-- 1 root root 0 Jul 12 16:00 a [root@Server3 tmp]# [root@Server3 tmp]# ls -l a -rw-r----- 1 root root 0 Jul 12 16:00 a [root@Server3 tmp]# find ./ -perm 640 -exec chmod 644 {} \; [root@Server3 tmp]# ls -l a -rw-r--r-- 1 root root 0 Jul 12 16:00 a [root@Server3 tmp]# 说明:-ok和-exec的区别是,-ok需要对每一个动作进行确认,-exec不需要确认。
本文出自 “HeZhang” 博客,请务必保留此出处http://hezhang.blog.51cto.com/1347601/1437511
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。