文件查找locate 和 find

大纲
一、前言
二、locate
三、find

一、前言

在windows下,我们查找文件,可以在搜索里面,输入文件名或通配符就可以进行搜索。在Linux下,要查找文件可以找locate 或 find命令进行查找,而且这些命令还有其他特别的功能。

二、locate

特点:此命令是非实时查找命令,依赖于索引,因此搜索速度快。但是索引的构建是当系统空闲时由系统自动进行,是个每天任务。因此,你搜索的文件若是索引构建后有变化的,那样就有问题。构建索引可以手动进行,命令:updatedb(有点类似make whatis),但是构建索引需要时间,长短由系统情况而定。

举例:

查找文件ubuntu

blob.png

发现,只要在路径名中带有关键字,或基名带关键字的,都可以被搜索出来,因此,此命令用的不多。

三、find

特点:实时遍历各个文件查找,速度慢于locate.属于精确查找。

命令:find [option]… [查找路径] [查找条件] [处理动作]

查找路径: 默认当前目录

查找条件:

-name 文件名称:支持globbing字符
-user USERNAME: 根据文件的属主查找
-group GRPNAME:根据文件的属组查找
-uid UID:根据UID 查找
-gid GID:根据GID查找
-nouser :查找没有属主的文件
-nogroup :查找没有属组的文

 举例子说明下:

按文件名查找,默认是本路径下:

blob.png

跟locate不一样,只会在文件名那里才会出现要搜索的文件

其他的类似。

下面介绍下没有属主和没有属组的文件:如果把一个用户删除,在属主、属组的位置将被数字代替:

blob.png

因此,查找的时候使用-nouser -nogroup 可以查找到相应的文件

blob.png

组合条件查找

与:-a,同时满足条件(可省略)
或:-o,满足一个即可
非:-not / !,条件取反

blob.png
或者

blob.png

注意,括号需要转义 \( \)

-type 根据文件类型查找

f: 普通文件
d: 目录文件
l: 符号链接
b: 块设备
c: 字符设备
s: 套接字文件
p: 命名管道
比如:查找 /dev 下的字符设备:

blob.png

-size 根据文件大小查找(常用单位 K M G)

= # :如=2 ,显示范围x 1 <x<=2  
+ # :如+2 ,显示范围x  >2
- # :如-2 ,显示范围x  <=1

举例:查找3k-4K(含)以内的文件

blob.png

以时间为单位查找(天为单位)

-atime
  +# :如+2 3天以前
  =# :如 2  2-3天
  -#:如-2  2天之内
-mtime
-ctime

举例

查找修改时间是11天前的文件

blob.png

根据权限查找

-perm [+/-] MODE 
   + 任何一类用户的权限只要能包含对其指定的任何一位权限即可
   - 每类用户指定的检查权限都匹配

举例 
查找其他用户有执行权限的文件

blob.png查找所有用户都没有写权限的文件,因为+的权限是或,前面加个非,就变成了与blob.png

执行动作

看到了我上面的例子,有些在后面加了-ls,这就是执行动作的一种

-print: 默认处理动作,显示
-ls :类似于ls -l
-exec COMMOND {}\; :表示对查找的内容进行处理的动作,{}表示查找到的内容的引用

blob.png

当然我们也可以将查找到的文件直接删除,该权限等等。但是要注意的是,如果直接删除是没有命令交互提示的。

在使用find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行。但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现 溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这就是xargs命令的用处所在,特别是与find命令一起使用。

find | xargs COMMAND

blob.png

以上是一些文件查找的用法和体会,在今后的学习中,还会继续慢慢体会。

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

(0)
上一篇 2015-05-11 11:52
下一篇 2015-05-11 11:57

相关推荐

  • RHCE系列之LVM—-操作篇

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://nolinux.blog.51cto.com/4824967/1350942    上一篇为大家介绍LVM的一些概念,这一篇就教大家一些日常的LVM的操作吧。毕竟,理论还是要应用到实战中来的嘛。 &nb…

    Linux干货 2016-08-15
  • Linux启动流程

    内核级别: 1、POST开机加电自检 BIOS加载CMOS信息并进行开机自检,检测硬件设备是否正常并进行硬件设备初始化 2、Boot Sequence(BIOS):定义设备启动顺序 BIOS定义设备启动顺序,并读取启动设备数据加载硬盘上的第一个扇区MBR。 3、Boot Loader(MBR):bootloader功能实现 Boot Loader提供一个菜单…

    Linux干货 2016-11-23
  • 磁盘管理进阶–RAID–LVM初步应用

    配置配额系统 综述   在内核中执行   以文件系统为单位启用   对不同组或者用户的策略不同 根据块或者节点进行限制 执行软限制( soft limit)硬限制( hard limit) 初始化 分区挂载选项: usrquota、 grpquota 在创建好分区后, 对/etc/fstab 进行修改 , 加入 后加进来的分区的…

    Linux干货 2016-09-01
  • 马哥教育网络班22期+第2周课程练习

    1、Linux上文件/目录相关命令有哪些? 1)目录管理类命令:mkdir、rmdir (1)mkdir:make directorise 创建文件夹  使用格式:      mkdir [OPTION]… DIRECTORY…    &nb…

    Linux干货 2016-09-08
  • Windows与linux分区的区别:

        对于我们普通人来讲,分区就是我们看到的“我的电脑”下面的C盘、D盘、E盘······,每个分区都有自己的区域,无法使用别的分区的空间,这样可以起到保护分区中文件的作用。其实,这样很容易理解。可是,对于linux初学者来讲,因为使用习惯了windows,到了linux下面,一下子很难转换过来。  &nb…

    2017-07-16
  • 3rd work

    1、列出当前系统上所有已经登陆的用户名,注意同一个用户登陆多次,则只显示一次即可。 [root@localhost ~]# w 11:50:45 up 24 min,  3 users,  load average: 0.04, 0.04, 0.10 USER     TTY      FROM             LOGIN@   IDLE   JCP…

    Linux干货 2017-10-08

评论列表(2条)

  • stanley
    stanley 2015-05-11 11:56

    标签其实应该认真写,增加seo率才能提高贡献率

    • 麦鲸
      麦鲸 2015-05-12 11:22

      @stanley好的,一定注意。谢谢老师~!