文件查找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

相关推荐

  • 学习宣言

    新的一天开始了, 从今天起,正式开始Linux的系统学习, 对于基础薄弱的我来说,是一个新的挑战,而我接受这个挑战。 在今后的日子里,一定会拼搏奋进,更上一层楼。 积土而为山,积水而为海, 定会一天比一天强,努力吧。

    Linux干货 2016-10-24
  • 在CentOS中获取命令帮助

    在CentOS中获取命令帮助    在使用和学习CentOS系统中,当我们遇上不熟悉的命令却又需要了解它的详细用法的时候,我们需要获取帮助。除了借助他人和搜索引擎之外,自己通过查看系统帮助文档来解决问题是很重要的。下面就来介绍如何获取帮助以及简单的解决思路:    一、如何获取命令帮助 Linux提供多层次的命令帮助:…

    Linux干货 2016-07-27
  • linux 磁盘管理

    磁盘管理 Linux思想一切皆文件: open(),read(),write(),close() I/O 设备地址 设备类型: 块设备:block,存取单位“块”,磁盘 (随机访问) 字符设备:char,存取单位“字符”,键盘 (逻辑访问) 设备文件:关联至一个设备驱动程序,进而能够跟与之对应硬件设备进行通讯。 设备编号: ll /dev/sda* root…

    Linux干货 2016-08-29
  • Linux udev-ASM(基于oracle5.8)

    之前有客户有在Linux下使用udev来做ASM,操作系统版本为oracle5.8,实际跟rhel5.8差不多,当时只是做了简单记录,现在整理下来,与大家一起分享。 1)需求信息 磁盘分区操作 –省略– 分区后,使用parted让磁盘生效 需求: 将/dev/sdc1 <–>/dev/asm-disk1 将/d…

    Linux干货 2016-07-29
  • Iptables入门到进阶

    Iptables入门到进阶 一、前言 Firewall(防火墙): 隔离工具;Packets Filter Firewall(包过滤防火墙);工作于主机或网络的边缘,对经由的报文根据预先定义的规则(匹配条件)进行检测,对于能够被规则匹配到的报文实行某预定义的处理机制的一套组件; 防火墙类型 从防火墙的实现形式来分的话,防火墙可以分为软件防火墙和硬件防火墙 硬…

    Linux干货 2017-02-11
  • 学习宣言

    失败是留给不坚持的人·······

    Linux干货 2016-12-27

评论列表(2条)

  • stanley
    stanley 2015-05-11 11:56

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

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

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