Find命令简介与使用

用途:

        find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

语法:

find [OPTION]… [查找路径] [查找条件] [处理动作]

选项:

     根据文件名和inode查找:
        -name "文件名称":支持使用glob
        *, ?, [], [^]
        -iname"文件名称":不区分字母大小写
        -inumn 按inode号查找
        -samefilename 相同inode号的文件
        -links n 链接数为n的文件
        -regex "PATTERN":以PATTERN匹配整个文件路径字符串,而不仅仅是文件名称
    根据属主、属组查找:
        -user USERNAME:查找属主为指定用户(UID)的文件
        -group GRPNAME: 查找属组为指定组(GID)的文件
        -uidUserID:查找属主为指定的UID号的文件
        -gidGroupID:查找属组为指定的GID号的文件
        -nouser:查找没有属主的文件
        -nogroup:查找没有属组的文件
    根据文件类型查找:
        -type TYPE:
        f: 普通文件

        d: 目录文件
        l: 符号链接文件
        s:套接字文件
        b: 块设备文件
        c: 字符设备文件
        p: 管道文件

    组合条件:
        与:-a
        或:-o
        非:-not, !

    根据文件大小来查找:
        -size [+|-]#UNIT
            常用单位:k, M, G
        #UNIT: (#-1, #]
            如:6k 表示(5k,6k]
        -#UNIT:[0,#-1]
            如:-6k 表示[0,5k]
        +#UNIT:(#,∞)
            如:+6k 表示(6k,∞)

    根据权限查找:
        -perm [/|-]MODE
        MODE: 精确权限匹配
        /MODE:任何一类(u,g,o)对象的权限中只要能一位匹配即可,或关系,+ 从centos7开始淘汰
        -MODE:每一类对象都必须同时拥有指定权限,与关系0 表示不关注
        find-perm755会匹配权限模式恰好是755的文件
    只要当任意人有写权限时,find-perm+222就会匹配
    只有当每个人都有写权限时,find-perm-222才会匹配
    只有当其它人(other)有写权限时,find-perm-002才会匹配
处理动作

    -print:默认的处理动作,显示至屏幕;
    -ls:类似于对查找到的文件执行“ls -l”命令
    -delete:删除查找到的文件;
    -flsfile:查找到的所有文件的长格式信息保存至指定文件中
    -ok COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令;
        对于每个文件执行命令之前,都会交互式要求用户确认
    -exec COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令
    {}: 用于引用查找到的文件名称自身
    find传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件一次性传递给后面的命令
    有些命令不能接受过多参数,此时命令执行可能会失败,下面方式可规避此问题
        find | xargsCOMMAND

 

示例与目录:

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

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

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

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

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

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

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

8、find-namesnow.png
    搜索名为snow.png的文件
9、find-inamesnow.png
    不分大小写地搜索名为snow.png、Snow.png、SNOW.PNG等等的文件
10、find / -name “*.txt”
11、find /var –name “*log*”
12、find-userjoe -groupjoe
13、find /home –type d -ls

14、find-userjoe-not-groupjoe
15、find-userjoe-o-userjane
    或者:find-not\(-userjoe-o-userjane\)
16、find/-userjoe-o-uid500 

17、找出/tmp目录下,属主不是root,且文件名不以f开头的文件
        find /tmp\( -not -user root -a -not -name 'f*' \) -ls
        find /tmp-not \( -user root -o -name 'f*' \) –ls
18、查找/etc/下,除/etc/sane.d目录的其它所有.conf后缀的文件
        find /etc-path ‘/etc/sane.d’ -a -prune -o -name “*.conf” -print
19、find -name “*.conf” -exec cp {} {}.org \;
        备份配置文件,添加.orig这个扩展名
20、find/tmp-ctime+3-userjoe-okrm{}\;
        提示删除存在时间超过3天以上的joe的临时文件
21、find~-perm-002 -execchmodo-w{}\;
22、在你的主目录中寻找可被其它用户写入的文件
        find /data –type f -perm 644 -name “*.sh” –exec chmod 755 {} \;

 

 ====================================================================

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

 [root@centos6 var]# find /var/ -user root -a -group mail

1.jpg 

 

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

[root@centos6 var]# find -not \( -user root -o -user lp -o -user gdm \) -ls

2.jpg 

 

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

[root@centos6 ~]# find /var/ -mtime -7 -not \( -user root -o -user postfix \)

3.jpg

 

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

[root@centos6 ~]# find / \( -nouser -o -nogroup \) -atime -7

4.jpg

 

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

[root@centos6 ~]# find /etc/ -size +1M -type f

5.jpg

 

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

[root@centos6 ~]# find /etc/ -not -perm /222 -ls

6.jpg

 

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

[root@centos6 ~]# find /etc/init.d/ -perm -113

7.jpg

 

8、find-name snow.png
8.jpg    

9、find-iname snow.png
9.jpg    

10、find / -name “*.txt”

10.jpg

11、find /var –name “*log*”

11.jpg

12、find -user joe -group joe

12.jpg

13、find /home –type d -ls

13.jpg

 

14、find -user joe -not -group joe

 14.jpg

15、find-user joe -o -user jane

    或者:find -not \( -user joe -o -user jane\)

15.jpg

16、find / -user joe -o -uid 500

17.jpg

 

17、找出/tmp目录下,属主不是root,且文件名不以f开头的文件
       find /tmp \( -not -user root -a -not -name 'f*' \) -ls
      或者: find /tmp -not \( -user root -o -name 'f*' \) –ls

17.jpg

18、查找/etc/下,除/etc/sane.d目录的其它所有.conf后缀的文件
       find /etc-path ‘/etc/sane.d’ -a -prune -o -name “*.conf” -print

18.jpg

19、find -name “*.conf” -exec cp {} {}.org \;
       备份配置文件,添加.orig这个扩展名

19.jpg

20、find /tmp -ctime +3 -user joe -ok rm {} \;
       提示删除存在时间超过3天以上的joe的临时文件
21、find ~ -perm -002 -exec chmod o-w {} \;
22、在你的主目录中寻找可被其它用户写入的文件
       find /data –type f -perm 644 -name “*.sh” –exec chmod 755 {} \;

 

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

(0)
msj77539273msj77539273
上一篇 2016-08-30 17:51
下一篇 2016-08-30 22:49

相关推荐

  • 8月22日shell脚本编程之循环和函数

    shell脚本编程 本章内容 编程基础 脚本基本格式 变量 运算 条件测试 流程控制 函数 数组 高级字符串操作 高级变量 配置用户环境 编程基础 程序:指令+数据 编程程序风格:   过程式:以指令为中心,数据服务于指令   对象式:以数据为中心,指令服务于数据 shell程序:提供了编程能力,解释执行 程序的执行方…

    Linux干货 2016-08-24
  • 推荐-zabbix原理篇(1)

    zabbix原理篇(1) 介绍zabbix 之前让我们先来熟悉一下什么snmp ☺ SNMP:Simple Network Management Protoclol  翻译一下:简单网络管理协议 SNMP的工作模式是啥 ☺ NMS向agent采集数据 agent向NMS报告数据 NMS请求agent修改配置 SNMP组件…

    Linux干货 2016-04-11
  • 马哥linux运维网络班第22期-第一周博客作业

    计算机的组成及其功能 计算机由运算器,控制器,存储器,输入装置和输出装置组成 (1)运算器 对数据进行常规运算(+,-,*,/)和逻辑运算(与,或,非等)及比较位移等操作 (2)控制器 分析从存储器中读出的指令并按预先规定的步奏执行操作 (3)存储器 存储程序和数据信息并实现快速存取 (4)输入设备 把各种类型的信息转换为二进制编码输入进计算机存储起来 (5…

    Linux干货 2016-08-14
  • LVM详解

    一、概述     LVM全称为Logical Volume Manager,即逻辑卷管理器。LVM可以弹性的调整文件系统的容量,可以将多个物理分区整合在一起,并且根据需要划分空间或动态的修改文件系统空间。     LVM有两个版本: lvm,lvm2 二、LVM的相关概念   &…

    Linux干货 2015-04-28
  • linux学习笔记: shell脚本编程相关(上)

    前言 unix/linux操作系统下的shell,是一种壳,其目的是提供一个用户与计算机相互交互的命令接口,通过输入各种命令,达到操作的目的。 与此同时,shell支持控制流程,进而可以组合出各种各样的应用实例。 shell脚本的格式  首行shebang机制:  bash脚本,首行添加#!/bin/bash&nbsp…

    Linux干货 2017-04-18
  • Linux学习练习及作业&day07-正则表达式&文本处理工具

    第一部分、使用基本的文本处理工具(非grep)练习以下5题。 1、找出ifconfig命令结果中本机的所有IPv4地址     [root@localhost ~]# ifconfig |head -2 |tail -1     …

    Linux干货 2016-08-08

评论列表(1条)

  • 马哥教育
    马哥教育 2016-09-10 11:47

    对find命令的用法总结的很详细,练习部分怎么没做完就发布了?