Linux文件查找之find秘笈

前言

    Linux的基本特点之一是一切皆文件,在系统管理过程中难免会需要查找特定类型的文件,那么问题来了:如何进行有效且准确的查找呢?本文将对Linux系统中的文件查找工具及用法进行详细讲解。

常用工具对比

    常用的文件查找工具主要有locate(非实时查找)和find(实时查找)。locate查找依赖于索引,而索引构建相当占用资源,索引的创建是在系统空闲时由系统自动进行(每天任务),手动进行创建则可使用updatedb命令,查找速度快但结果非精确,即为模糊查找。而find相对于locate而言,是遍历所有文件进行条件匹配,查找速度慢但结果精确,即为精准查找。简言之,对于实际生产环境,find(实时查找)无疑是最有效的文件查找工具。

find的用法

命令格式:

find [options] [查找路径] [查找条件] [处理动作]
查找路径:默认为当前目录
查找条件:默认为指定路径下的所有文件
处理动作:默认为显示至屏幕

条件查找

-name "文件名称":支持使用globbing字符
      *:任意长度任意字符
      ?:任意单个字符
      []:范围内任意字符
      [^]:范围外任意字符
-iname "文件名称":查找时忽略字符大小写
-user USERNAME: 根据文件的属主查找
-group GRPNAME: 根据文件的属组查找
-uid UID:根据用户UID查找
-gid GID:根据用户GID查找
-nouser: 查找没有属主的文件
-nogroup: 查找没有属组的文件

组合条件查找

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

文件类型查找

-type TYPE:根据文件类型查找
      f:普通文件
      d:目录文件
      l:符号链接
      b:块设备
      c:字符设备
      s:套接字文件
      p:命名管道
-size [+|-]#UNIT:根据文件大小查找
      常用单位:k,M,G
      #UNIT:#-1<x<=#
      -#UNIT:x<=#-1
      +#UNIT:x>#
      (x为匹配到的文件大小)

时间戳查找

以“天”为单位
-atime(访问时间) [+|-]#
       +#:x>=#+1
       -#:x<#
       #:#<=x<#+1
       (x为匹配到的文件时间) 
-mtime(修改时间)
-ctime(改变时间)
以“分钟”为单位
-atime
-mtime
-ctime
(用法同上)

权限查找

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


处理动作

-print: 默认处理动作,显示
-ls:类似于ls -l
-exec COMMAND {} \;
-ok COMMAND {} \;
find一次性查找符合条件的所有文件,并一同传递给给-exec或-ok后面指定的命令,但有些命令不能接受过长的参数,此时使用另一种方式:
find | xargs COMMAND

find实战

#查找/scripts/目录中包含s以.sh结尾的文件并复制到/tmp目录

Linux文件查找之find秘笈

#查找/var/目录属主为root且属组为mail的所有文件

Linux文件查找之find秘笈

#查找/usr目录下不属于root、bin或scholar的所用文件

Linux文件查找之find秘笈

#查找/tmp/目录下最近一周内其内容修改过的,且不属于root且不属于scholar的文件

Linux文件查找之find秘笈

#查找当前系统上没有属主或属组,且最近1个月内曾被访问过的文件

Linux文件查找之find秘笈

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

Linux文件查找之find秘笈

#查找/etc/目录所有用户都没有写权限的文件

Linux文件查找之find秘笈

#查找/etc/目录下至少有一类用户没有写权限
#由于文件过多,已重定向

Linux文件查找之find秘笈

#查找/etc/rc.d/目录下,所有用户都有执行权限且其它用户有写权限的文件
#由于文件过多,已重定向

Linux文件查找之find秘笈

The end

    对于权限查找+222和-222的取反匹配,学习时错误的只对+222和-222取反,可懵了好一会才想明白。最后在啰嗦一句,切记:权限查找取反是对全局匹配取反,而不是只对权限取反!!!


    以上只是学习总结,如有错漏,大神勿喷~~~

本文出自 “北城书生” 博客,请务必保留此出处http://scholar.blog.51cto.com/9985645/1623450

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

(0)
书生书生
上一篇 2015-03-23 15:59
下一篇 2015-03-23 20:57

相关推荐

  • RAID级别及各个级别特性

    1、什么RAID      RAID是“Redundant Array of Independent Disk”的缩写,中文意思是独立冗余磁盘阵列。 2、RAID的级别及各个级别的特性:     (1)RAID-0:无差错控制的条带化:   &nbs…

    Linux干货 2016-04-12
  • 操作系统图形界面发展史(1981-2009)

    注意,本文这罗列了从1981年以来有重大意义的操作系统的图形界面。 首先,先介绍两个网站: http://www.guidebookgallery.org/ 如果你比较关注图形化UI的设计, 可以上这个网站上看看。 http://toastytech.com/guis/index.html 这是一个操作系统图形界面收集的网站,上面几科包括…

    Linux干货 2016-05-17
  • PHP安全模式详解(PHP5.4安全模式将消失)

    1. 安全模式      一直没有用过php的safe_mode安全模式,以此说明作为日后参考。      PHP 的安全模式是为了试图解决共享服务器(shared-server)安全问题而设立的。在结构上,试图在 PHP 层上解决这个问题是不合理的,但修改 web 服务器层和操作系统层显得非常不现…

    Linux干货 2015-06-02
  • 常见的单机虚拟网络类型

    前言:   无论是互联网还是物联网,他们的网络模型都是可以见的,而虚拟化和云计算中的网络模型 要比这些模型要复杂的多,有些设备你是可以到也有一些设备你是看不到的,这给我们运维人员带来的技术挑战。通过学习Xen、KVM虚拟化技术,对单机虚拟网络模型有了初步的认识,以下是我对单机虚拟网络模型的认识。 一、NAT模型    …

    Linux干货 2015-09-01
  • hbase安装配置(整合到hadoop)

    1.  快速单击安装 在单机安装Hbase的方法。会引导你通过shell创建一个表,插入一行,然后删除它,最后停止Hbase。只要10分钟就可以完成以下的操作。 1.1下载解压最新版本 选择一个 Apache 下载镜像:http://www.apache.org/dyn/closer.cgi/hbase/,下载 HBase Re…

    Linux干货 2015-04-13
  • SSH会话劫持实现端口转发

    在进行渗透测试时,我们有时候会碰到搭建的测试环境、产品服务器、DMZ或者其他类似的机器群的情况,这时我们完全可以把它们看作跳板。这些系统被设计成对外交互的接口,这时候我们考虑对其他域里的用户进行SSH会话劫持是个不错的选择。 那么如果你拥有了某一个跳板的控制权限,想要通过另一个域的用户对远程域进行访问会怎么办呢?当然,这时候你是没有密码、密钥的,你不能抛弃二…

    系统运维 2015-03-23

评论列表(3条)

  • stanley
    stanley 2015-03-24 09:54

    帮你重新格式化了代码段,进行了部分字体格式和大小调整,整体缩进段距,看起来要稍好些,加没

    • 书生
      书生 2015-03-24 10:06

      @stanley3Q :mrgreen: :mrgreen: :mrgreen:

  • Linux_love
    Linux_love 2015-03-28 17:48

    mark