Linux基础知识之find命令详解

在运维人员操作系统时,要接触大量的文件,为了避免忘记文件存放位置的尴尬,就需要我们有一种文件查找工具的帮忙,下面是两个文件查找工具的详解,locate以及find,分别分享给大家。

第一款工具: Locate

locate - find files by name

locate的工作依赖于事先构建好的索引库;查找文件时,直接搜索索引库里记载的文件的位置;

索引库的构建:

系统自动实现(周期性任务);

手动更新数据库(updatedb),但是索引构建的过程需要遍历整个文件系统,极其耗费系统资源;

updatedb - update a database for mlocate;

工作特性:

查询速度快,但不一定精确,无法匹配到数据库创建后的创建文件;

非实时查找,不能实时反馈当前文件系统上的文件状态 ;

使用方法:

locate [OPTIONS] FILE..

选项:

-c:统计查找结果的数量

-b:只匹配路径中的基名

-r:基于基本正则表达式写匹配模式

1

2

3

4

5

6

7

8

9

10

11

12

 

[root@linuxidc ~]# locate -c  "passwd"

165

[root@linuxidc ~]# locate -c  "inittab"

4

  

[root@linuxidc ~]# locate -b  "inittab"

/etc/inittab

/usr/local/share/man/zh_CN/man5/inittab.5

/usr/share/augeas/lenses/dist/inittab.aug

/usr/share/vim/vim74/syntax/inittab.vim

  

[root@linuxidc ~]# locate -r  "/passwd

 

第二款工具:Find

find: find - search for files in a directory hierarchy

工作方式:通过遍历指定起始路径下文件系统层级结构完成文件查找;

工作特性:

查找速度慢;

精确查找;

实时查找;

使用方法:

find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]

fing [OPTIONS] [查找起始路径] [查找条件] [处理动作]

查找起始路径:指定具体搜索目标起始路径;默认当前目录;

查找条件:指定的查找标准,可以根据文件名,大小,类型,从属关系,权限等标准,默认为指定目录下的所有条件

处理动作:对符合条件的文件作出的操作,例如删除等操作,默认为输出至标准输出

查找条件说明: 

以表达式的形式,包含选项和测试条件

测试:结果通常为布尔型数据("true""fales")

(1)根据文件名查找 注意:支持glob风格的通配符

-name "pattern":区分大小写

-iname "pattern":不区分名字的大小写,

-regex "patten":基于正则表达式模式查找文件,匹配是整个路径 ,而非其名;

wKioL1eEFy2hLWJ4AABrgXSwqs8040.png

   

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

 

        [root@linuxidc ~]# find /etc -iname "passwd"

        /etc/passwd

        /etc/pam.d/passwd

        [root@linuxidc ~]# find /etc -iname "*passwd"

        /etc/passwd

        /etc/pam.d/passwd

        /etc/security/opasswd

        [root@linuxidc ~]# find /etc -iname "passwd*"

        /etc/passwd

        /etc/passwd-

        /etc/pam.d/passwd

        [root@linuxidc ~]# find /etc -iname "passwd?"

        /etc/passwd-

        [root@linuxidc ~]# find /etc -iname "passwd[[:place:]]"

        [root@linuxidc ~]#

 

(2)根据文件从属关系查找

      -user username:查找属主指定用户的所有文件;

      -group groupname: 查找属组指定用户的所有文件;

-uid UID:查找属主指定UID的所有文件;

-gid GID:查找属组指定GID的所有文件;        #find /etc  -gid 5000

-nouser:查找没有属主的文件                     #find /etc  -nouser

 -ngroup:查找没有属组的文件                    #find /etc  -nogroup

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

 

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

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