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

相关推荐

  • linux用户管理(一)

    作为一个专业的服务器发行版,CentOS上存在着n多个用户,作为一个专业的运维工程师,linux的用户管理和用户组的管理是做为一个SA必不可少的工作. 下面我们就先来谈谈linux中的用户管理: useradd可以在系统中新建一个用户 用法如下: useradd [选项] 用户名 常用选项: -u 指定用户的UID -g 指定用户的初始组ID -G…

    Linux干货 2017-04-03
  • mysql5.5.32多实例配置

    操作系统:CentOS release 6.7 (Final) 内核版本:2.6.32-573.el6.x86_64 mysql版本号:mysql-5.5.32 1)安装mysql所需的依赖包 # adduser mysql -s /sbin/nologin -M # mkdir -p&n…

    Linux干货 2016-12-05
  • sed和awk的用例及pam安全措施-第十五周

    总结sed和awk的详细用法; sed用法 sed(Stream EDitor)是一款流编辑器,用来对文本进行过滤与替换操作。其原理是:通过文件或管道读取文件内容,但是sed默认并不直接修改源文件,而是一次仅读取文件的一行至模式空间(pattern space)根据sed指令进行编辑并输出结果后清除模式空间,即所有的操作都是在模式空间中进行的。 语法格式 s…

    2017-06-05
  • 马哥网络班21期-第六周作业

    请详细总结vim编辑器的使用并完成以下练习题    vim(visual interface):文本编辑器      模式        编辑模式        输入模式        末行…

    Linux干货 2016-09-07
  • lvs

    1、什么是LVS LVS是Linux Virtual Server的简写,以为Linux虚拟服务器,是一个虚拟服务器集群,其具有很好的可伸缩性、可靠性、可管理性。LVS集群采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务…

    Linux干货 2016-10-29
  • 马哥教育网络班21期第5周课程练习

    1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行; # grep '^[[:space:]]\+' /boot/grub2/grub.cfg 2、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行; # grep…

    Linux干货 2016-08-05

评论列表(1条)

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

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