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
下一篇 2016-08-30

相关推荐

  • 什么是Ansible?

    自动化工具——ansible   ansibleArchitecture ansibleProject 1. 什么是ansible ansible是个什么东西呢?官方的title是“Ansible is Simple IT Automation”——简单的自动化IT工具。这个工具的目标有这么几项:让我们自动化部署APP;自动化管理配置项;自动化的持…

    2017-09-24
  • shell脚本基础

    程序是由指令加数据组成 编程风格分为过程式和对象时 过程式:以指令为中心,数据服务于指令,适合小型程序 对象式:以数据为中心,指令服务于数据,社和大型程序 高级语言的执行方式分为编译型和解释型 编译型:先将高级语言通过编译器编译成二进制代码再执行 解释型:程序编写完成后不转换成二进制代码,在使用时才通过解释器解释运行,不生成二进制程序 shell就是一种解释…

    Linux干货 2016-08-18
  • N28 第三周【2】:用户和组管理

    用户和组管理 前言 Linux用户管理非常关键且重要,Linux的所有进程都是以不同的身份拥有不同的权限来运行和调度资源的。但是我们不用费劲心思去管理,因为系统将用户划分成为了两部分:无所不能的root用户和普通用户。同时呢,又将普通用户分为系统用户和登录用户。对于Linux,他会用UID去快速识别用户身份,对于我们,可以用用户名去识别。 接下来介绍一下用户…

    Linux干货 2017-12-19
  • 正则表达式

    grep:Global search REgular expression and Print out the line         文本搜索工具,根据用户指定的”模式“对目标文本逐行进行匹配检查;打印匹配到的行        模式:由正则表达式字符及文本字符所编写的过滤条件…

    Linux干货 2016-08-08
  • Nginx七层反代服务器 (Blog 20)

    http反代、fastcgi反代

    Linux干货 2017-12-20
  • Linux yum客户端的配置及yum命令

    一、什么是yum我们在Linux系统上安装处理软件,一般是使用RPM,它是通过预先编译完成并且把软件打包为RPM文件格式后,再加以安装的一种方式,使用者只要拿到这个打包好的软件,然后将里头的文件放置到应该摆放的目录,这样就完成了安装。但是,由于有些软件是有依赖于其他软件的,当你要安装某个RPM类型的软件时,RPM会检验RPM软件数据库,它所依赖的相关软件包是…

    2017-06-11

评论列表(1条)

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

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