文件查找:locate、find

文件查找:在文件系统上查找符合条件的文件;

locate, find

非实时查找(数据库查找):locate  //不是遍历系统文件,把当前系统目录下的所有文件抽取出来制作成一个索引(或者叫数据库),locate就是基于索引进行的查找;

实时查找:find

locate:依赖于事先构建的索引;索引的构建是在系统较为空闲时自动进行(周期性任务);

              手动更新数据库(updatedb);

       索引构建过程需要遍历整个根文件系统,极消耗资源;

 

工作特点:

                     查找速度快;

                     模糊查找;

                     非实时查找;

语法

locate KEYWORD

# locate passwd

find:

实时查找工具,通过遍历指定路径下的文件系统完成文件查找;

 

工作特点:

              查找速度略慢;

              精确查找;

              实时查找;

 

语法:

find [OPTION]... [查找路径] [查找条件] [处理动作]

查找路径:指定具体目标路径;

   默认为当前目录;

查找条件:指定的查找标准,可以文件名、大小、类型、权限等标准进行;

   默认为找出指定路径下的所有文件;

处理动作:对符合条件的文件做什么操作;

   默认输出至屏幕;

大多数用到的是查找路径、查找条件、处理动作

查找条件:

根据文件名查找:

-name "文件名称"(严格区分大小写):支持使用glob

*, ?, [], [^]

示例:

# find /etc/ -name passwd

# find /etc/ -name "passwd*"

-iname "文件名称":不区分字母大小写

-regex "PATTERN":以PATTERN匹配整个文件路径字符串,而不仅仅是文件名称;

 

根据属主、属组查找:

-user USERNAME:查找属主为指定用户的文件;

# find /tmp -user root -ls  //查找tmp目录下属主为user的文件,并用-ls长格式显示

-ls:是查找到文件,对文件执行的动作 ,相当于#ls -l

group GRPNAME: 查找属组为指定组的文件;

# find /tmp -group user1 -ls

-uid UserID:查找属主为指定的UID号的文件;

# find /home -uid 501 -ls

-gid GroupID:查找属组为指定的GID号的文件;

-nouser:查找没有属主的文件;

当一个用户被删除后,这个用户之前创建的文件的属主和属组就为这个用户的UID和GID了。

# find /tmp -nouser -ls

-nogroup:查找没有属组的文件;

# find /tmp -nogroup -ls

 

根据文件类型查找:

 -type TYPE:

f: 普通文件

d: 目录文件

#find /tmp -type d     

#find /tmp -type d -ls

l: 符号链接文件

s:套接字文件

#find /tmp -type s     

b: 块设备文件

c: 字符设备文件

p: 管道文件

组合条件:

与:-a

或:-o

非:-not, !

 # find /tmp -nouser -o -nogroup  //没有属主或没有属组的文件

猜你喜欢

转载自www.cnblogs.com/hanshanxiaoheshang/p/9203820.html