Linux文件查找之find命令

前言:   

    Linux文件种类繁多,难免在维护Linux中会忘记文件的路径。所有在维护Linux中学好查找命令是非常必要的。

    Linux查找命令有很多,比如 whereis,type,which,locate,find(重点)。

        1、whereis

                whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。

                whereis命令的使用实例:

QQ截图20150608101211.png

       2、type

                type命令其实不能算查找命令,它是用来区分某个命令到底是由shell自带的,还是有shell外部的独立二级制文件提供的。如果一个命令是外部命令,那么使用-P参数,会显示该命令的路径,相当于which命令。

                type命令的使用实例:

QQ图片20150608130234.png

       3、which

                which命令的作用是在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令就可以看到系统命令是否存在,以及执行的到底是哪一个位置的命令。

常用参数:--skip-alias:去除别名。

                which命令的使用实例:

QQ截图20150608110929.png

        这里cd命令是内建命令,因而无法查到。

        

        4、locate

                locate查找为非实时查找,也成模糊查找。locate依赖于索引,而索引构建时在系统空闲时由系统自动进行(每天任务);手动进行使用updatedb;locate命令的优势是查找速度快,劣势为非精准查找。

                locate命令使用实例:
                    locate的参数:
                        -n #:限定显示#行
                        -i:不区分大小写,默认区分
                        -r FILE_NAME:显示以FILE_NAME为结尾的行

QQ截图20150608144729.png

QQ截图20150608153537.png

            关于locate的其他参数使用,这里就不做详细讲解了,还请朋友们自行Google

        5、find(重点)

                find命令是遍历所有文件进行条件匹配,查找速度慢但结果精确,即为精准查找。也是我们在生产环境中使用最多,最强大的文件查找工具。

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

        查找条件:

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

        组合条件查找:

            与:-a,同时满足
            或:-o,满足一个即可
            非:-not,!,条件取反
                注:-not A -a -not B = -not\(A -o B\)
                       -not A -o -not B = -not\(A -a B\)

        -type TYPE:根据文件类型查找

             f:普通文件
                d:目录文件
                l:符号链接
                b:块设备
                s:套接字文件
                p:命令管道

        -size [+|-]#UNIT(单位)

              常用单位:k,M,G
                #UNIT:#-1<x<#
                -#UNIT:x<=#-1
                +#UNIT:x>#

        根据时间戳查找:

            以“天”为单位
                -atime(访问时间) [+|-]#
                    +#:(#+1)天之前被访问过的文件 x>=#+1
                    -#:x<#
                    x:#<=x<#+1
                        例如:+2:最近一刻访问文件的时间是2天以前
                                  -2:访问文件的时间是当前时间之2天之内
                                    2:访问文件的时间大于2天小于3天
                -mtime(修改时间):
                -ctime(改变时间):
                用法同atime。

        以“分钟”为单位 

              -amin
              -mmin
              -cmin

        根据文件权限查找:

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

        处理动作:           

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

    实战演示:

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

QQ截图20150608210555.png

2、查找/usr目录下不属于root、bin或hadoop的所有文件

QQ截图20150608211042.png

3、查找/etc/目录下最近一周内其内容修改多的,且不属于root或hadoop的文件;

QQ截图20150608211809.png

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

QQ截图20150608212624.png

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

QQ截图20150608212822.png

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

QQ截图20150608213127.png

7、查找/etc/目录下至少有一类用户没有写权限;

QQ截图20150608214309.png

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

QQ截图20150608214646.png

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

(0)
水蒸气水蒸气
上一篇 2015-06-15 18:21
下一篇 2015-06-16 21:31

相关推荐

  • 复习-RAID原理详解

    一、RAID RAID:冗余磁盘阵列,将多个磁盘不同的方式组成阵列,作为单一磁盘使用;通过RAID,大幅提高了I/O能力、容错性。 二、RAID级别 不同的磁盘阵列组成模式,称为磁盘级别,不同的RAID级别可提供不同的I/O能力提升、磁盘可用率和容错性 1、RAID 0 条带卷 strip  用两块和两块以上磁盘组成,RAID控制器将数据平均切割成…

    Linux干货 2016-07-04
  • Linux系统结构 详解

    Linux系统一般有4个主要部分: 内核、shell、文件系统和应用程序。内核、shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序、管理文件并使用系统。部分层次结构如图1-1所示。  1. linux内核         内核是操作系统的核心,具有很多最基本功能,它负责管理系…

    Linux干货 2015-04-13
  • M25开篇”如何学习Linux”

    首先有幸参加马哥linux运维工程师培训,在接下来的四个半月里如何学好linux,首先得了解什么是linux? 在开班前对linux的初步了解中知道linux是免费、开源、拥有广泛而开放的linux社区的一款服务器操作系统,比较于windows和linux的用处都各有特点。 windows的用户体验众人皆知,作为一款亲民友善的系统,没有学习成本,甚至学龄前童…

    2017-07-11
  • #招聘福利#深圳云戈科技有限公司广州分公司/运维工程师/广州/招聘3人

    深圳云戈科技有限公司广州分公司/运维工程师/广州 招聘人数:3人 职位名称:运维工程师 岗位职责:负责大型数据处理系统、交易系统的维护工作。包括系统调优、数据库调优、系统版本升级、系统事件             处理、系统监控与巡检、数据分析与修复、实施应急方案、参数配置、系统扩容与部署、维护报告…

    Linux干货 2016-03-28
  • bash变量之位置参数变量

        什么是变量     变量是 bash 环境中非常重要的一个玩意儿,就是让某一个特定字串代表不固定的内容就是了,讲的更简单一点,我们可以“用一个简单的 "字眼" 来取代另一个比较复杂或者是容易变动的数据”。    &nbsp…

    Linux干货 2016-08-15
  • 网络管理基础-子网划分及网络配置练习

    1、某公司申请到一个C 类IP 地址,但要连接6 个的子公司,最大的一个子  公司有26 台计算机,每个子公司在一个网段中,则子网掩码应设为?  192.168.100.1 网络位192.168.100 192.168.100.00000000 C类掩码255.255.255.0 192.168.100. 000 00001  …

    Linux干货 2016-09-05