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

相关推荐

  • linux基础

    1.计算机的组成及其功能。 计算机的主要组成部分可以归纳为以下五个部分:控制器、运算器、存储器、输入设备、和输出设备。 控制器 是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,调度程序、数据、地址,协调计算机各部分工作及内存与外设的访问等。 运算器 运算器的功能是对数据进行各种算术运算…

    Linux干货 2016-08-15
  • vsftp简单应用

    vsftp配置详解 前言 FTP(File Transfer Protocol)是文件传输协议的简称。它能让用户 连接上一个远程计算机(运行着 FTP 服务器程序)查看远程 计算机上有哪些文件,然后把文件从远程计算机上下载到 本地计算机,或把本地计算机文件上传到远程计算机。但是ftp是一种古老的文件传输协议,是明文传输,特别的不安全所以就有了vsftp。 一…

    Linux干货 2016-12-18
  • 马哥网络教育班第21期+第七周课程练习

    1、创建一个10G分区,并格式为ext4文件系统; (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl; (2) 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳; [root@localhost ~]# fdisk /dev/sd…

    Linux干货 2016-08-12
  • Homework Week-10 CentOS启动相关及bash脚本编程

    1、请详细描述CentOS系统的启动流程(详细到每个过程系统做了哪些事情) 2、为运行于虚拟机上的CentOS 6添加一块新硬件,提供两个主分区;   (1) 为硬盘新建两个主分区;并为其安装grub;   (2) 为硬盘的第一个主分区提供内核和ramdisk文件; 为第二个分区提供rootfs;   (3) 为rootfs提供…

    Linux干货 2016-10-24
  • linux基本命令的使用

      1>    查看当前终端名:tty 或who am i       查看当前所有登录的终端信息:who       查看当前所有登录的终端的详细信息 w 2> 编辑器    …

    2017-07-15
  • 1017练习题

    1017练习题 作业 10月17日 柴震 1.生产环境发现一台服务器系统时间产生偏差,造成服务异常,请帮忙校正。 hwclock 查看硬件是否准确,如准确无误,可以使用hwclock -s以硬件时间为准。 或者使用ntpdate命令指定一台NTP服务器,进行同步。 2.生产有一个数据同步脚本需要执行很长时间,怎样做到无人值守,在…

    Linux干货 2016-10-18

评论列表(1条)

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

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