Find命令的使用

Find命令的基本用法

在Linux系统中find命令是一个强大文件查找类工具,它支持根据文件名,权限,文件大小,访问以及修改时间查找,使用方法如下:

find [option] [查找起始路径] [查找条件] [处理动作]

  • 起始路径:指定查找文件或目录的路径,默认为当前目录
  • 查找条件:可根据文件名,权限,文件大小以及从属关系查找文件
  • 处理动作:动查找到的文件进行处理,如查看详细信息,删除或复制等。默认为显示

1 查找条件的选项:

(1)根据文件名查找:-name PATTERN 支持global通配符

             -iname   不区分文件名大小写    支持global通配符  </br>
             -regex   PATTERN          基于正则表达式但是匹配整个路径名

(2)根据从属关系查找:-user USERNAME 查找属主为USERNAME的文件

            -group    GROUPNAME     查找属组为GROUPNAME的文件
            -uid/gid   UID/GID      根据UID/GID查找文件
            -nouser                 查找所有没有属主的文件
            -nogroup                查找所有没有属组的文件

(3)根据文件类型查找:-type TYPE (b c d f s p l)

(4)根据文件大小查找:-size[+|-]#UNIT 常用单位:K M G

         #UNIT  精确匹配文件大小
        -#UNIT  小于#的文件
        +#UNIT  大于#的文件

(5)根据时间戳查找: -atime/-mime/-ctime[+|-]# 以天为单位查找访问时间,修改时间或改变时间

                 #       精确匹配#天  [#,#-1] 
                -#       #天至当前时间的访问区间[0-#]
                +#       #天之前的所有文件
         -amin/-mmin/-cmin[+|-]# 以分钟为单位查找

(6)根据文件权限查找: -prem /|- mode 根据文件读写执行权限匹配文件

              mode         精确匹配权限
             /mode         只要属主属组以及其他用户任意一位权限匹配均视为匹配到的文件。9位权限之间为或关系
             -mod          必须匹配每一类用户的每一位权限。9位权限之间为与关系

2 处理动作:

      -print: 输出至标准输出,默认的动作 ##
         -ls:类似于对查找到的文件执行“ls -“ 命令
         -delete:删除查找到的文件
         -fls /PATH/TO/SOMEFILE:把查找到的所有文件的长格式信息保存至指定文件
         -ok COMMAND {} \; :对查找到的每个文件执行由此处COMMAND表示的命令,需确认
         -exec  COMMAND {} \; :对查找到的每个文件执行由此处COMMAND表示的命令,不确认

3 结合xargs 命令使用

find命令查找到文件送至后面的命令时,是先查找出所有符合条件的路径然后一次性传递给后面的命令,但是有些命令不支持过长的参数,此时执行会失败因此需要使用管道符号输入给xargs命令执行。

xargs [options] COMMAND

           -a    从文件中读取作为stdin
           -p    没执行一个参数会先询问用户
           -t    先打印然后再执行命令
           -i    {}是告诉xargs,后面的命令中,用{}表示占位符,将会被实际的参数替代 
           -n    用于指定每次传递几个参数 
           -d    用于指定切分输入内容时,具体的分隔符

示例:

1 显示etc目录大于1M的文件并使用ls命令显示出来

[root@mycentos etc.backup]# find /etc -size +1M | xargs ls -lh
-rw-r--r--. 1 root root 6.6M Aug 16 17:04 /etc/1dss
-rw-r--r--. 1 root root 1.4M Mar  6  2015 /etc/brltty/zh-tw.ctb
-rw-r--r--. 1 root root 3.7M Nov 21  2015 /etc/selinux/targeted/policy/policy.29
-rw-r--r--. 1 root root  29M Aug 16 17:06 /etc/sysconfig/atd
-r--r--r--. 1 root root 6.7M Jul 31 07:31 /etc/udev/hwdb.bin

2 找到所有没有属主属组的文件并将属主和属组改为root用户

[root@mycentos etc.backup]# find / -nouser -o -nogroup | xargs -i chown root:root {}

Find命令使用的练习

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

[root@mycentos etc.backup]# find /var -user root -a -group mail -ls
31458804 drwxrwxr-x   2 root mail 4096 Aug 27 15:50 /var/spool/mail
3148559   60 -rw-------   1 root mail59873 Aug 27 15:50 /var/spool/mail/root

2 查找当前系统上没有属主或属组并且3天内曾被访问过的文件或目录

[root@mycentos ~]# find / \( -nouser -a -nogroup \) -atime -3
/home/hadoop
/home/hadoop/.mozilla
/home/hadoop/.mozilla/extensions
/home/hadoop/.mozilla/plugins

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

[root@mycentos ~]# find /etc -perm -222 -ls
251659560 lrwxrwxrwx   1 root root   17 Jul 31 07:16 /etc/mtab -> /proc/self/mounts
107365050 lrwxrwxrwx   1 root root   54 Jul 31 07:22 /etc/fonts/conf.d/65-0-lohit-tamil.conf -> /usr/share/fontconfig/conf.avail/65-0-lohit-tamil.conf
87286650 lrwxrwxrwx   1 root root   56 Jul 31 07:17 /etc/fonts/conf.d/59-liberation-mono.conf -> /usr/share/fontconfig/conf.avail/59-liberation-mono.conf
107365080 lrwxrwxrwx   1 root root   54 Jul 31 07:22 /etc/fonts/conf.d/66-ucs-miscfixed.conf -> /usr/share/fontconfig/conf.avail/66-ucs-miscfixed.conf

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

[root@mycentos ~]# find /etc -size +1M -a -type f 
/etc/selinux/targeted/policy/policy.29
/etc/sysconfig/atd
/etc/udev/hwdb.bin
/etc/1dss
/etc/brltty/zh-tw.ctb

5 查找/usr目录下不属于root,bin或Hadoop的所有文件或目录

[root@mycentos ~]# find /usr -not -user root -a -not -user bin -a -not -user hadoop -ls 方法1
258679324 drwx------   2 polkitd  root 4096 Jul 31 07:21 /usr/share/polkit-1/rules.d
17625859   16 -rwsr-sr-x   1 abrt abrt15336 Dec  1  2015 /usr/libexec/abrt-action-install-debuginfo-to-abrt-cache
[root@mycentos ~]# find /usr -not \( -user root -o -user bin -o -user hadoop \) -ls 方法2
258679324 drwx------   2 polkitd  root 4096 Jul 31 07:21 /usr/share/polkit-1/rules.d
17625859   16 -rwsr-sr-x   1 abrt abrt15336 Dec  1  2015 /usr/libexec/abrt-action-install-debuginfo-to-abrt-cache

6 查找/etc目录下一周内内容修改过并且属主不是root也不是Hadoop的文件或目录

[root@mycentos etc]# find /etc -mtime -7 -not \( -user root -o  -user hadoop \) -ls
292524890 -rw-r--r--   1 harryharry   0 Aug 27 16:21 /etc/testfile

7 查找/etc下至少有一类用户没有执行权限的文件

[root@mycentos etc]# find /etc/ -not -perm  -111

8 查找/etc/init.d目录下所有用户都有执行权限并且其他用户又有写权限

[root@mycentos etc]# find /etc/init.d/ -perm  -113 -ls
21319658 -rwxr-xrwx   1 root root 6630 Sep 16  2015 /etc/init.d/network

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

(0)
N27_CaiShuangN27_CaiShuang
上一篇 2017-08-28 17:54
下一篇 2017-08-28 19:38

相关推荐

  • N25-第三周作业

      列出当前系统上所有已经登陆的用户的用户名,注意:同一个用户登陆多次,则只显示一次即可。     2.取出最后登陆到当前系统的用户的相关信息。     3.取出当前系统上被用户当作其默认shell的最多的那个shell.     4.将/etc/password中的第三个字段数值最大的后…

    Linux干货 2016-12-19
  • LVM逻辑卷管理器(Logical Volume Manager)

    逻辑卷管理器(Logical Volume Manager) 简介      LVM的做法是将几个物理的分区通过软件组合成为一块看起来是独立的大磁盘(VG),然后将这块大磁盘再分成可以使用的分区(LV),最终就能够挂载使用了。内部通过PE来进行扩展或缩小。 PV(PhysicalVolume)物理卷 用fdisk命令调整系统标识…

    Linux干货 2016-09-01
  • 基于LNMP架构添加Memcached支持,并验证其缓存结果

    一 Memcached简介 Memcached是一个自由开源的,高性能,分布式内存对象缓存系统。它是一种基于内存的key-value存储,用来存储小块的任意数据(字符串、对象)。这些数据可以是数据库调用、API调用或者是页面渲染的结果。 Memcached简洁而强大。它的简洁设计便于快速开发,减轻开发难度,解决了大数据量缓存的很多问题。它的API兼容大部分流…

    Linux干货 2016-12-12
  • Linux手动编译源代码文件

    一、简介     Linux系统上程序包安装的方式多种多样,一般来说可通过rpm包安装、yum在线安装等方式实现。但有时候为了实现某种功能,而这种功能在通常情况下又不是太常用或是因为其他原因,不能通过yum下载安装或在网上没有找到rpm包,只是找到了程序安装包的源代码的话,这种情况下我们就可以对源代码直接进行编译安装,以便解决这种临时需求…

    Linux干货 2015-09-26
  • Linux软件包管理与实例

    Linux系统的早期,编译是利用程序代码生成可执行文件的过程的手动编译。虽具有一定优势,但是专业知识要求高,不利于实际操作。因此出现了许多软件包管理器,最具代表的是由Red Hat 推出的RPM。Yum则有利于解决linux安装软件时的依赖性。 所谓依赖性,就是linux系统中的软件将不同的功能模块单独写入到不同的软件包中,最后将多个相互依存的软件包结合起来…

    2017-08-13
  • 设计模式(十一)代理模式Proxy(结构型)

    1.概述        因为某个对象消耗太多资源,而且你的代码并不是每个逻辑路径都需要此对象, 你曾有过延迟创建对象的想法吗 ( if和else就是不同的两条逻辑路径) ? 你有想过限制访问某个对象,也就是说,提供一组方法给普通用户,特别方法给管理员用户?以上两种需求都非常类似,并且都需要解决一个更大的问题:你如何提供…

    Linux干货 2015-07-09

评论列表(1条)

  • 马哥教育
    马哥教育 2017-10-10 13:09

    这篇博客整理的非常好,几乎涵盖了find神器的各种场景,还配有案例,给你点个赞,一定能帮到不少人。