locate与find不得不说的事

本文内容:

locate与find

练习


    locate与find是linux中最常用的两种查找方式,二者各有优缺点,locate查找迅速,却由于数据库非实时更新,导致可能查找不全,而find由于是从指定路径开始遍历,速度相对较慢,却更为准确,而且用法也更加灵活,因此find运用更加广泛,也是本文的重点。


文件查找:

locate搜索:非实时搜索,速度很快,因为从数据库中查找。更新数据库需要使用updatedb命令。

find查找:实时搜索,速度相对慢,但是更加灵活。

 

locate

   特点: 查询系统上预建的文件索引数据库 /var/lib/mlocate/mlocate.db ,依赖于事先构建的索引; 

索引的构建是在系统较为空闲时自动进行(周期性任务)

管理员手动更新数据库(updatedb);索引构建过程需要遍历整个根文件系统,极消耗资源; v  

查找速度快; 

模糊查找; 

非实时查找,搜索的是文件的全路径,不仅仅是文件名,可能只搜索用户具备读取和执行权限的目录。

locate  KEYWORD 

有用的选项 

 -i 执行不区分大小写的搜索 

 -n  X name 只列举前X个与name匹配的项目 v

locate  foo 搜索名称或路径中带有“foo”的文件 v

locate  -r  \.foo$’ 使用Regex来搜索以“.foo”结尾的文件。

 

find 

v 语法:find [OPTION]… [查找路径] [查找条件] [处理动作

   查找路径:指定具体目标路径;默认为当前目录。

   查找条件:指定的查找标准,可以文件名、大小、类型、权限等标准进行;默认为找出指定路径下的所有文件 

   处理动作:对符合条件的文件做操作,默认输出至屏幕

 

   查找条件:根据文件名和inode查找:

-name "文件名称":支持使用glob *, ?, [], [^] 

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

-inum  n  inode号查找 

-samefile name  相同inode号的文件 

-links  n   链接数为n的文件

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

 

根据属主、属组查找:

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

-group GRPNAME: 查找属组为指定组(GID)的文件 

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

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

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

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

 

根据文件类型查找: 

-type TYPE: 

f: 普通文件 

d: 目录文件 

l: 符号链接文件 

s:套接字文件 

b: 块设备文件 

c: 字符设备文件 

p: 管道文件

组合条件: 

与:-a  或:-o  非:-not, !

德·摩根定律: 

(P 且 Q) = (非 P) 或 (非 Q) 

(P 或 Q) = (非 P) 且 (非 Q)

!A -a !B = !(A -o B)

 !A -o !B = !(A -a B)

根据文件大小来查找: 

-size [+|-]#UNIT 

常用单位:k, M, G 

#UNIT: (#-1, #],如:6k 

-#UNIT[0,#-1], 如:-6k 

+#UNIT(#,),   如:+6k

 

根据时间戳: 

以“天”为单位; 

-atime [+|-]#,  

#: [#,#+1) 

+#: [#+1,

-#: [0,#)

-mtime

-ctime 

以“分钟”为单位: 

-amin   -mmin   -cmin

注意: 目录排除

find  /  -path =/proc -a -prune -o -name *.conf -print

-ls用的时候需要注意 -ls之前的条件需要用括号括起来。

 

根据权限查找: 

-perm [/|-]MODE 

MODE: 精确权限匹配 

/MODE:任何一类(u,g,o)对象的权限中只要能一位匹配即可,或关系,

centos7开始淘汰 

-MODE:每一类对象都必须同时拥有指定权限,与关系0表示不关注

find -perm 755 会匹配权限模式恰好是755的文件

只要当任意人有写权限时,find -perm +222就会匹配 

只有当每个人都有写权限时,find -perm -222才会匹配 

只有当其它人(other)有写权限时,find -perm -002才 会匹配

 

处理动作:

-print:默认的处理动作,显示至屏幕; v

-ls:类似于对查找到的文件执行“ls -l”命令 v

-delete:删除查找到的文件; v

-fls file:查找到的所有文件的长格式信息保存至指定文件中 v

-ok COMMAND {} \; 对查找到的每个文件执行由 COMMAND指定的命令; 对于每个文件执行命令之前,都会交互式要求用户确认。

  -exec COMMAND {} \; 对查找到的每个文件执行由 COMMAND指定的命令 。{}: 用于引用查找到的文件名称自身 v

find传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件一次性传递给后面的命令。有些命令不能接受过多参数,此时命令执行可能会失败,下面方式可规避此问题  find | xargs COMMAND

 

练习:

1、查找/var目录下属主为root,且属组为mail的所有文件

 v            01.png

 

2、查找/var目录下不属于rootlpgdm的所有文件

        02.png

3、查找/var目录下最近一周内其内容修改过,同时属主不为 root,也不是postfix的文件

               03.png

      

4、查找当前系统上没有属主或属组,且最近一个周内曾被访问过的文件

            v04.png

 

5、查找/etc目录下大于1M且类型为普通文件的所有文件 

    v05.png

 

6、查找/etc目录下所有用户都没有写权限的文件 v

     06.png

7、查找/etc目录下至少有一类用户没有执行权限的文件 v

      find /etc -not -perm -222

 

8、查找/etc/init.d目录下,所有用户都有执行权限,且其它用户有写权限的文件

              07.png

原创文章,作者:liuzhuo,如若转载,请注明出处:http://www.178linux.com/36671

(0)
liuzhuoliuzhuo
上一篇 2016-08-18
下一篇 2016-08-18

相关推荐

  • Casinoly Erfahrungen Fiberglass Manufacturer in Saudi Arabia

    Casinoly Erfahrungen Fiberglass Manufacturer in Saudi Arabia Das Online Casino ohne Pause kann sich mit nur wenigen Blicken als sicher erweisen. Zum Einen, weil der Anbieter schon …

    Linux干货 3天前
  • NoSQL理论基础及安装、基本操作

    30分钟开始 分布式系统理论: CAP: 一致性 可用性 分区容错性     MongoDB: 安装 crud 索引 副本集 分片   NoSQL:非关系型、分布式、不提供ACID功能 技术特点: 1、简单数据模型 2、元数据和应用数据分离(分不同服务器存储) 3、弱一致性   优势: 1、避免不必要的复杂性 2、高吞…

    2016-11-27
  • Linux 的硬链接与软链接的区别

       链接是指在电子计算机程序的各模块之间传递参数和控制命令,并把它们组成一个可执行的整体的过程。通俗一点无非是把文件名和计算机文件系统使用的节点号链接起来。   linux中链接有硬链接和软连接之分,首先我们来介绍硬链接,硬链接相当于创建了文件的第二个名字,增加了额外的记录项用来引用文件,还是隶属与同一文件系统上,是同一个物理…

    Linux干货 2016-10-20
  • samba的部署及应用

    samba: 启动服务:nmb.server;smb.server 会通过文件系统的方式输出给客户端 smb:Service Message Block;服务信息块 cifs:Common Internet File System,通用互联网文件系统 samba:Andrew Tridgell;热情奔放的桑巴…

    Linux干货 2016-10-19
  • N26-第四周作业-邢岩

    马哥门徒-N26-邢岩   精神练习需要深入认真的工作以及热情的劲头。当你开始练习,你是在挣扎、在反抗,你需要集中精力,然后慢慢进步。那么,我们就开始吧。   第一题,复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。   ~]# cp -r /et…

    Linux干货 2017-02-15
  • 第一周-2:Linux部分常用命令使用示例、查看命令行工具使用手册以及LinuxFHS部分目录简介

    一、部分命令使用示例: 1、ifconfg 在命令行界面下或系统配置脚本中用于配置、控制及查询TCP/IP网络接口的系统管理工具 [netartisan@localhost 桌面]$ ifconfig eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500 &n…

    Linux干货 2016-11-07

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-19 10:58

    文章层次结构清晰,对find的常用选项总结的也很详解,find命令是笔试中的一个重要的考点,希望课后能多加练习,进行好总结和梳理。