Linux文件查找命令(locate/find)(2)

[root@localhost etc]# touch mypasswd [root@localhost etc]# [root@localhost etc]# locate mypasswd [root@localhost etc]# [root@localhost etc]# updatedb [root@localhost etc]# [root@localhost etc]# locate mypasswd /etc/mypasswd

在etc下我们创建mypasswd,立马使用locate命令查找并不能查找,使用updatedb之后更新之后索引数据库之后就可以查找到了。

find

通过直面意思我们就知道find就是“查找”的意思,find的是一个实时查找命令,它会在查找的时候会遍历指定起始路径下文件系统层级结构完成文件查找,所以其缺点就是查找的速度要比locate慢。

下面我们就要介绍一下find的使用方法:

NAME:递归地在层次目录中处理文件 SYNOPSIS:find [OPTIONS] [查找起始路径] [查找条件] [处理动作] 查找路径:可以指定搜索目标的其实路径,默认为当前目录 查找条件:可以指定查找标准,可以根据文件名、大小、类型、从属关系、权限等匹配 处理动作:对符合查找条件的文件做出操作,比如删除等,默认行为为至标准输出

find的选项不常用,了解可使用man find来查看,下面主要来说明一下查找条件和处理动作,find的状态返回值为布尔值,查找的到则返回"0",查找不到则返回大于"0"的数字。

查找条件:

1.根据文件名查找

-name "pattern" -iname "pattern" #支持的通配符的模式,i为不区分大小写 -regex "pattern" #基于正则表达式模式查找文件,注意这里匹配的不是文件本身,而是包含这个文件路径

举例:

[root@localhost etc]# find /etc/ -name "passwd" #搜索/etc目录下含有passwd的文件 /etc/pam.d/passwd /etc/passwd [root@localhost etc]# find /etc/ -iname "passwd" #搜索/etc目录下含有passwd的文件,忽略字符大小写 /etc/pam.d/passwd /etc/passwd /etc/Passwd [root@localhost etc]# find /etc/ -iname "passwd[0-9]" #搜索/etc目录下含有passwd且后面还有0-9任意一个数字的文件 /etc/passwd1 [root@localhost etc]# find /etc/ -regex '/etc/passwd.?' #搜索/etc目录下含基名以passwd开头且后面可以有任意字符也可以没有的文件 /etc/passwd /etc/passwd- /etc/passwd1 

2.根据文件从属关系查找

-user USERNAME:查找属主为指定用户的文件 -group GROUPNAME:查找属组为指定组的文件 -uid UID:查找属主为指定UID的文件 -gid GID:查找属组为指定的GID的文件 -nouser:查找没有属主的文件 -nogroup:查找没有属组的文件

举例:

[root@localhost ~]# find /tmp/ -user frank -ls #输出tmp下属主是frank的文件,-ls后面再讲 9336543 0 drwx------ 2 frank frank 27 7月 16 04:46 /tmp/kde-frank 9357728 4 -rw-rw-r-- 1 frank frank 132 7月 16 04:46 /tmp/kde-frank/xauth-1000-_0 9357736 0 drwx------ 2 frank frank 34 7月 16 04:47 /tmp/akonadi-frank.yFqCJF 9357758 0 srwxrwxr-x 1 frank frank 0 7月 16 04:46 /tmp/akonadi-frank.yFqCJF/akonadiserver.socket 27750615 0 drwx------ 2 frank frank 6 7月 16 04:47 /tmp/.esd-1000 [root@localhost ~]# find /tmp/ -group frank -ls #输出/tmp目录下属组是frank的文件 9336543 0 drwx------ 2 frank frank 27 7月 16 04:46 /tmp/kde-frank 9357728 4 -rw-rw-r-- 1 frank frank 132 7月 16 04:46 /tmp/kde-frank/xauth-1000-_0 9357736 0 drwx------ 2 frank frank 34 7月 16 04:47 /tmp/akonadi-frank.yFqCJF 9357758 0 srwxrwxr-x 1 frank frank 0 7月 16 04:46 /tmp/akonadi-frank.yFqCJF/akonadiserver.socket 27750615 0 drwx------ 2 frank frank 6 7月 16 04:47 /tmp/.esd-1000 [root@localhost ~]# find /tmp/ -uid 1000 #显示/tmp下uid为1000的文件 /tmp/kde-frank /tmp/kde-frank/xauth-1000-_0 /tmp/akonadi-frank.yFqCJF /tmp/akonadi-frank.yFqCJF/akonadiserver.socket /tmp/.esd-1000 [root@localhost ~]# find /tmp/ -nouser -ls #显示/tmp下没有属主的文件,如果一个用户创建一个文件之后,用户被删除,则显示为原来的uid和gid,不会显示属组合属主 375722 0 -rw-rw-r-- 1 1003 1003 0 7月 23 00:08 /tmp/mygrp.txt 

3.根据文件类型查找

-type TYPE TYPE可以为以下: f:普通文件 d:目录文件 l:符号链接 b:块设备文件 c:字符设备文件 p:管道文件 s:套接字文件

举例:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/13610.html