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

相关推荐

  • ☞实时数据同步方案{ rsync; inotify; }

    实时数据同步方案{ rsync; inotify; } rsync 传输数据 安装 rsyncd 服务 CentOS 6 CentOS 7 配置 rsyncd 服务 配置 rsync 手动同步示例     启动 rsyncd 服务 CentOS 6 CentOS 7 rsync 客户端命令 rsync 数据传输功能 基…

    Linux干货 2016-10-29
  • 基本网络设置

    我们在上网的时候会遇到各种各样的问题,比如有时候网络不通,没有ip地址,或者ip地址有冲突等等,这就需要我们懂得一些网络的配置,方便以后使用。基本网络配置:主机名,ip地址,网关,DNS服务器。1、 主机名的配置第一种方法:在配置文件修改Centos7版本:vim /etc/hostname 改过配置文件后需要使其生效,命令为hostname centos7…

    2017-09-09
  • N28-第二周作业

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。
    2、bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。
    3、请使用命令行展开功能来完成以下练习:
    (1)、创建/tmp目录下的:a_c, a_d, b_c, b_d
    (2)、创建/tmp/mylinux目录下的:
    mylinux/
    ├── bin
    ├── boot
    │   └── grub
    ├── dev
    ├── etc
    │   ├── rc.d
    │   │   └── init.d
    │   └── sysconfig
    │   └── network-scripts
    ├── lib
    │   └── modules
    ├── lib64
    ├── proc
    ├── sbin
    ├── sys
    ├── tmp
    ├── usr
    │   └── local
    │   ├── bin
    │   └── sbin
    └── var
    ├── lock
    ├── log
    └── run
    4、文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。
    5、如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?
    6、显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。
    7、显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。
    8、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。
    9、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。
    10、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
    11、复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中。
    12、复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。

    Linux干货 2017-12-11
  • Linux的哲学思想及Linux发行版

    讲述一下几个问题: 第一,Linux的哲学思想;第二,Linux发行版的基础目录名称,命名法则和功用规定;第三,Linux不同发行版之间的联系和区别。 Linux的哲学思想: 1、一切皆文件。是Unix/Linux的基本哲学之一,不仅普通的文件,目录,字符设备,块设备,套接字等在Unix/Linux中都是以文件被对待。 2、小型,单一用途的程序。程序和可执行…

    Linux干货 2016-09-17
  • 22期第十一周课堂练习

    1、详细描述一次加密通讯的过程,结合图示最佳。 发送方:BOB                        &nbsp…

    Linux干货 2016-12-12
  • AIDE入侵检测

    AIDE

    当一个入侵者进入了你的系统并且种植了木马,通常会想 办法来隐蔽这个木马(除了木马自身的一些隐蔽特性外, 他会尽量给你检查系统的过程设置障碍),通常入侵者会 修改一些文件,比如管理员通常用ps -aux来查看系统进 程,那么入侵者很可能用自己经过修改的ps程序来替换掉 你系统上的ps程序,以使用ps命令查不到正在运行的木马 程序。如果入侵者发现管理员正在运行crontab作业,也 有可能替换掉crontab程序等等。所以由此可以看出对于 系统文件或是关键文件的检查是很必要的。目前就系统完 整性检查的工具用的比较多的有两款:Tripwire和AIDE ,前者是一款商业软件,后者是一款免费的但功能也很强 大的工具

    2018-01-08

评论列表(1条)

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

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