本文共 3862 字,大约阅读时间需要 12 分钟。
一、简介
find是一个文件查找工具,是在系统工具上查找默认的文件,跟locate类似。
二、与locate优缺点比较
locate:
优点:查找速度快,自动更新数据库
缺点:依赖于数据库,非实时查找,结果非精确,模糊查找
find:
优点:精确匹配,实时查找
缺点:查询速度较慢
三、命令详解
1)、格式
find [options] [查找路径] [查找条件] [处理动作]
2)、查找条件
查找条件:如果不写,默认则为当前目录
-name "文件名称": 支持使用gloab(文件通配)
查找/etc目录下以fstab为文件名的文件
1 2 | [root@localhost ~]# find /etc/ -name fstab /etc/fstab |
查找/etc目录下以a开头的文件
1 2 3 4 5 6 7 8 9 10 11 | [root@localhost ~]# find /etc/ -name "a*" /etc/autofs_ldap_auth.conf /etc/acpi /etc/acpi/actions /etc/aliases.db /etc/X11/applnk /etc/auto.net /etc/xdg/autostart /etc/xdg/autostart/at-spi-registryd.desktop /etc/xdg/menus/applications-merged /etc/xdg/menus/applications.menu |
-iname "文件名称":查找是不区分大小写
查找 /tmp/test文件夹下的1N1和1n1文件
1 2 3 | [root@localhost test]# find /tmp/test/ -iname 1n1 /tmp/test/1n1 /tmp/test/1N1 |
-user UserName:根据文件的属主查找
现在/tmp下的内容如下
1 2 3 4 5 6 7 8 9 10 | [root@localhost tmp]# ll total 44 -rw------- 1 openstack openstack 812 Feb 15 17 : 59 grub.conf -rwx------. 1 openstack root 1195 Feb 13 11 : 15 ks-script-rq0L47 -rwxr-xr-x. 1 root root 346 Feb 13 11 : 15 ks-script-rq0L47.log drwxr-xr-x 12 root root 4096 Feb 15 19 : 38 logs -rwxr-xr-x 1 root root 19153 Feb 15 18 : 06 rc.sysinit drwxr-xr-x 2 root root 4096 Feb 20 21 : 34 test -rw-------. 1 root root 0 Feb 13 10 : 49 yum.log -rw------- 1 root root 202 Feb 20 20 : 50 yum_save_tx- 2014 - 02 - 20 - 20 -50DIA6bO.yumtx |
查找/tmp/文件夹下的用户属主为openstack的文件
1 2 3 | [root@localhost tmp]# find /tmp/ -user openstack /tmp/grub.conf /tmp/ks-script-rq0L47 |
-group GroupName:根据用户的属组查找文件
查找以属组为openstack的文件
1 2 | [root@localhost tmp]# find /tmp/ -group openstack /tmp/grub.conf- |
-uid UID:根据属主的UID查找
-GID GID:根据属组的GID查找
-nouser:查找没有属主的文件
-nogroup:查找没有属组的文件
查找条件可以使用组合条件进行查询
-a:与,同时满足,可忽略
查找/var目录中属主为root且属组为mail的文件
1 2 | [root@localhost tmp]# find / var / -user root -group mail / var /spool/mail |
-o:或,只要有一个满足就可以
查找/usr目录下属于root或bin的所用文件
1 2 | [root@localhost tmp]# find /usr/ -user root -o -user bin 由于文件太多,此处不粘贴查找结果 |
-not 非,跟!相同,即本条件取反
查找/usr目录下不属于root或bin的所用文件
1 2 | [root@localhost tmp]# find /usr/ -not -user root -not -user bin /usr/libexec/abrt-action-install-debuginfo-to-abrt-cache |
-type 根据文件类型查找
f:普通文件
d:目录
b: 块设备
c:字符设备
l:符号链接文件
p:命名管道
s:套接字
查找/etc目录下的所有软链接
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | [root@localhost tmp]# find /etc/ -type l /etc/init.d /etc/gdm/Xsession /etc/rc1.d /etc/rc /etc/X11/xinit/xinputrc /etc/X11/fontpath.d/cjkuni-fonts-ukai /etc/X11/fontpath.d/cjkuni-fonts-uming /etc/X11/fontpath.d/xorg-x11-fonts-100dpi:unscaled:pri= 30 /etc/X11/fontpath.d/fonts- default /etc/X11/fontpath.d/xorg-x11-fonts-Type1 /etc/X11/fontpath.d/xorg-x11-fonts-misc:unscaled:pri= 10 /etc/X11/fontpath.d/liberation-fonts /etc/X11/fontpath.d/ default -ghostscript 由于文件过多,此处只复制了部分 |
-size:根据文件大小查找
-size[+|-]#,#的常用单位为k,M,G,表示为一个取值空间内的值,
查找/etc/目录下大于1M且类型为普通文件的所有文件
1 2 3 4 | [root@localhost tmp]# find /etc/ -size +1M -type f /etc/selinux/targeted/modules/active/policy.kern /etc/selinux/targeted/policy/policy. 24 /etc/gconf/gconf.xml.defaults/%gconf-tree.xml |
也可以时间戳查找:
find命令支持的时间戳有天和分钟
以天为单位(time):
-atime[+|-]:访问时间
-ctime:改变时间
-mtime:修改时间
以分钟为单位(min):
-amin:
-mmin:
-cmin:
查找/tmp下访问时间在5天以前的文件
1 2 3 4 | [root@localhost tmp]# find /tmp/ -atime + 5 /tmp/ks-script-rq0L47.log /tmp/ks-script-rq0L47 /tmp/yum.log |
根据权限查找:
-perm[+|-]MODE
MODE:精确匹配
+MODE:任何一类用户的任何一位权限匹配即可,常用于查找某类用户的某特定权限是否存在
-MODE:每类用户的指定权限都要检查且必须都匹配才可以
查找/etc/init.d目录下,所有用户都有执行权限其其他用户有写权限的文件
1 | [root@localhost tmp]# find /etc/init.d/ -perm - 113 |
3)、处理动作:
-print:默认选项,可以省略。表示打印在标准输出上
-ls:以长格式显示查找到的各位文件的信息
-exec COMMAND {} \;:对查找到的文件执行指定的命令
-ok COMMAND {} \;:在交互的模式下对查找到的文件执行指定的命令
查找/tmp下访问时间在5天以前的文件并把这些文件删除
1 | [root@localhost tmp]# find /tmp/ -atime + 5 -exec rm -rf {} \; |
也可以通过管道的机制用给下一个命令执行
find |xargs COMMAND
上一题还可以写成这样
1 | [root@localhost ~]# find /tmp/ -atime + 5 | xargs rm -rf |
由于本人水平有限,请大家多多批评指正,谢谢
本文转自wangfeng7399 51CTO博客,原文链接:http://blog.51cto.com/wangfeng7399/1363535,如需转载请自行联系原作者