#14 文件查找之locate与find

文件查找:按照文件名或文件属性来搜索文件:

locate:

模糊查找:不区分大小写,不做关键字的定位;

基于专用的数据库进行查找,数据库应该事先创建,并且定期更新;

可以使用updatedb命令手动更新locate数据库;

查找速度非常快,查找精确度非常有限;

find:

精确查找:

查找精度高,速度慢:

在指定的位置进行文件名或文件属性的遍历扫描;强烈不建议对根目录进行find操作;

实时查找;

使用find命令只能搜索当前用户具有读取和执行权限的目录;

find命令:

find - search for files in a directory hierarchy

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

查找路径:默认为当前工作目录,可以指定具体的目录路径;

查找条件:进行本次搜索的标准,可以是文件名、文件大小、文件类型、文件权限等等;默认是指定目录中的所有文件;

处理动作:对于符合条件的文件进行某个处理操作;默认将查找结果输出到显示器;

根据文件名查找:

-name 文件名称,支持使用globbing,(*,?,[],[^])

-iname 文件名称,支持使用globbing,(*,?,[],[^])

根据文件的的inode编号查找:

-inum inode编号:通过给定的inode编号查找对应的文件名及路径;

-samefile name:通过给定的文件名查找对应的inode编号,进而确定所有具有该inode编号的文件名及路径;

-links n:查找链接数为n的所有文件;

根据正则表达式查找:

-regex pattern:以pattern匹配整个文件路径字符串,而不仅仅是给定文件的名称;

根据文件的属主和属组进行查找:

-user uname:根据属主为指定用户的用户名进行查找;

-uid UID:根据属主为某个UID进行查找;

-group gname:根据属组为指定属组的用户名进行查找;

-gid GID:根据属组为某个UID进行查找;

-nogroup:在文件的属组上没有组对应的组名;

-nouser:在文件的属主上没有用户对应的用户名;

根据文件的类型查找:

-type 文件类型:

b:块设备

c:字符设备

d:目录文件

f:普通文件

l:符号链接文件

p:管道文件

s:套接字文件

-xtype:文件类型:符号链接文件的匹配需要配合其他的选项来完成;

根据时间戳进行查找:

以天为单位:

-atime [+|-]n:根须访问时间查找,以天为单位;

-ctime [+|-]n:根须改变时间查找,以天为单位;

-mtime [+|-]n:根须修改时间查找,以天为单位;

n:[n,n+1]从当前时间开始计算,前n天至n+1天;

+n:[n+1,+∞]从当前时间开始计算,从n+1天开始,至∞天

-n:[n,0]从当前时间开始计算,n天之内所有;

以分钟为单位:

-amin [+|-]n:根须访问时间查找,以分钟为单位;

-cmin [+|-]n:根须改变时间查找,以分钟为单位;

-mmin [+|-]n:根须修改时间查找,以分钟为单位;

例子:

5-28-11-18

-mtime -3

5-25-11-18

-mtime 3

5-24-11-18

-mtime +3

根据文件的大小进行查找:

-size [+|-]n[cwbkMG]

n:(n-1,n]

-n:[0,n-1]

+n:(n,+∞)

例子:

find -size +2k

当前目录下所有大于2kb的文件;

find -size 2k

当前目录下所有1kb-2kb之间的文件;

find -size -2k

当前目录下所有小于1kb的文件;

组合条件:

-a:逻辑与

-o:逻辑或

-not, !:逻辑非

逻辑组合条件遵循德摩根定律:

非(A 与 B)= 非A 或 非B

非(A 或 B)= 非A 与 非B

根据权限进行查找:

-perm [/|-]mode

mode:精确匹配指定的权限

/mode:隐含了逻辑或的关系,任何一个权限位的权限中只要能有一个权限为匹配,即可满足条件;

-mode:隐含了逻辑与的关系,每一个权限位的权限中都必须同时包含指定权限位,才能满足条件;

所有都有 取反 任意一个没有

! ( a与b与c ) = !a 或 !b 或 !c

所有没有 取反 任何一个有

! ( !a与!b与!c ) = a 或 b 或 c

处理动作:

-print:输出到显示屏幕,默认的动作;

-ls:对查找到的结果执行ls -li命令显示;

-exec command {} \;:

-ok command {} \;:

对于查找到的结果执行command命令;

区别:

-exec是非交互式的;

-ok是交互式的;

{}:占位符,用来引用被find命令查找到的所有文件的路径信息;

-exec和-ok的取代执行操作:

chomd a-r $(find -perm -444 -type f)

find -perm -444 -type f |xargs chomd a-r

man xargs命令:

注意:管道输送的是纯字符串信息,所以如果管道之后的命令不是处理字符串的命令,需要使用xargs命令将其转换成能够被后面命令处理的参数;

时间: 2024-10-08 09:45:28

#14 文件查找之locate与find的相关文章

Linux 系统之文件查找工具--- locate、 find详解

一.学习Linux为什么要学习文件查找工具? 作为Linux爱好者,或者Linux运维人员经常会遇到要查找某个或者某一类文件的问题,但对于"一切皆文件"的Linux系统来说,如何能够在成千上万的文件中快速精确的定位到我们所需的文件,对我们来说是至关重要的.因此,熟练掌握并运用Linux系统下的文件查找命令是我们快速定位的关键. 本文着重介绍Linux环境下的locate.find文件查找工具 二.文件查找工具locate使用详解 2.1.locate - find files by n

【Linux相识相知】文件查找(locate/find)

在用linux操作系统的时候,当我们忘记之前某个文件存储的位置,但是知道其文件名或者模糊的知道其文件名,我们都可以通过文件查找工具来查找,linux提供两种常用的查找工具,locate和find,在日常使用中后者比前者较前者功能更强大更具有实时性,下面我们就这两种工具来谈一谈她们的使用方法. Locate locate是基于实现构建好的索引库(索引库可以理解成文件路径的集合),索引库的位置放在/var/lib/mlocate/mlocate.db文件里面,系统一般一天会自动更新一次,也可以使用u

文件查找之locate、whereis与find

locate 非实时,模糊匹配,根据文件系统的数据库进行查找: updatedb:生动生成文件数据库,这个数据库会在每天固定的时间自动生成,也可以用此命令手动生成. /var/lib/mlocate/mlocate.db yum install -y mlocate locate命令其实是find -name的另一种写法 whereis whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b).man说明文件(参数-m)和源代码文件(参数-s).如果省略参数,则返回所有信息. w

文件查找工具locate与find

写在前面: 博客书写牢记5W1H法则:What,Why,When,Where,Who,How. 本篇主要内容: ● locate用法 ● 使用find基于文件属性进行查找 locate与find简介: locate与find都是文件查找工具(区别与grep等文本查找工具),尤其是find,可根据文件的诸多属性(如文件大小.属主属组.权限信息.修改时间等),对文件进行实时查找 locate: 1.查找默认数据库文件/var/lib/mlocate/mlocate.db,所以查找速度快,非实时,每天

linux命令:find文件查找工具 locate命令查找

     find命令简介: 实时.精确.支持众多查找标准 遍历指定目录中的所有文件完成查找,速度慢: 1.命令格式: locate filename 直接跟需要查找的文件  eg locate passwd  系统文件数据库中所有 包含passwd的文件. find 查找路径 查找标准 查找到以后的处理动作  查找路径:默认为当前目录  查找标准:默认为指定路径下的所有文件  处理动作:默认为显示到屏幕上 eg:find /etc -name passwd  表示在etc目录下查找名字为pas

Linux文件查找之locate与find

大纲 一.locate命令 二.find命令 三.locate与find优缺点对比 四.find实例 一.locate

linux文件查找(find,locate)

文件查找: locate: 非实时,模糊匹配,查找是根据全系统文件数据库进行的: # updatedb, 手动生成文件数据库 速度快 find: 实时 精确 支持众多查找标准 遍历指定目录中的所有文件完成查找,速度慢: find 查找路径 查找标准 查找到以后的处理运作 查找路径:默认为当前目录 查找标准:默认为指定路径下的所有文件 处理运作:默认为显示 匹配标准: -name 'FILENAME':对文件名作精确匹配 文件名通配: *:任意长度的任意字符 ? [] -iname 'FILENA

文件查找及find命令详解

find 1.文件查找: 在文件系统上查找符合条件的文件的过程: 2.文件查找:locate, find locate: 非实时查找工具:依赖于事先构建的索引:索引的构建是在系统较为空闲时自动进行(周期性任务):手动更新此数据库(updatedb):查找速度快:模糊查找: find:实时查找:查找速度略慢:精确查找: 3.find命令使用方法: find [OPTION]... [查找路径] [查找条件] [处理动作] 查找路径:默认为当前路径: 查找条件:指定的查找标准,可以根据文件名.大小.

linux运维练习-vim编辑和文件查找(8月30)

1.总结文本编辑工具vim的使用方法:   光标跳转:       字符跳转:        h:向左移动一个字符        l:向右移动一个字符        h:向上移动一个字符        j:向下移动一个字符       在(hjkl)前加上数字,表示跳转几个字符  单词跳转:       w:后单词的词首       e:当前或者后一个单词的词尾       b:当前或者前一单词的词首       在(web)前加上数字,表示多次移动  行间移动:      #G:第#行的行首