find详解

find命令: 

              含义:实时查找工具,通过遍历指定起始路径下文件系统层级结构完成文件查找。由于find具有如此强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。即使系统中含有网络文件系统(NFS),find命令在该文件系统中同样有效,只要你具有相应的权限。在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统)。

工作特性:

 查找速度略慢;

      精确查找;

     实时查找;

find命令的使用:

           使用格式: find [OPTIONS]  [查找起始路径]  [查找条件]  [处理动作]

                   find  [-H] [-L] [-P]  [path...] [expression]

 查找起始路径:指定具体搜索目标起始路径;默认为当前目录;

    查找条件:指定的查找标准,可以根据文件名、大小、类型、从属关系、权限等等标准进行;默            认为找出指定路径下的所有文件;

    处理动作:对符合查找条件的文件做出的操作,例如删除等操作;默认为输出至标准输出;

find命令查找条件:

             根据文件名查找:

-name  "pattern"

          -iname"pattern"

          支持glob风格的通配符:*,?, [], [^]

             -regexpattern:基于正则表达式模式查找文件,匹配是整个路径,而非其名;

   

根据文件从属关系查找:

-userUSERNAME:查找属主指定用户的所有文件;

              -groupGRPNAME:查找属组指定组的所有文件;

               

           -uidUID:查找属主指定的UID的所有文件;

              -gidGID:查找属组指定的GID的所有文件;

              

           -nouser:查找没有属主的文件;

              -nogroup:查找没有属组的文件;

                              

    根据文件的类型查找:

-typeTYPE:

              f:普通文件

              d:目录文件

              

           l:符号链接文件

              b:块设备 文件

              c:字符设备文件

              p:管道文件

              s:套接字文件

组合测试:

 与:-a, 默认组合逻辑;

            或:-o

            非:-not, !

            !A-a !B = !(A -o B)

            !A-o !B = !(A -a B)

                       

根据文件的大小查找:

-size[+|-]#UNIT

                                                       常用单位:k, M, G

              #UNIT:(#-1, #]

             -#UNIT:[0,#-1]

             +#UNIT:(#, oo)

根据时间戳查找:

 以“天”为单位:

              -atime  [+|-]#

                                                                    #:[#, #-1)

             -#:(#, 0]

             +#:(oo, #-1]

             -mtime

             -ctime

           以“分钟”为单位:

              -amin

              -mmin

              -cmin

                        

根据权限查找:

 -perm [/|-]mode 根据文件的权限来查找文件

             mode:精确权限匹配;

             /mode:任何一类用户(u,g,o)的权限中的任何一位(r,w,x)符合条件即满足;

             9位权限之间存在“或”关系;

             -mode:每一类用户(u,g,o)的权限中的每一位(r,w,x)同时符合条件即满足;

             9位权限之间存在“与”关系;

    示例:

       1、查找/var目录下属主为root,且属组为mail的所有文件或目录;

~]# find /var -user root -a -group mail -ls

       

       2、查找/usr目录下不属于root, bin或hadoop的所有文件或目录;用两种方法;

~]# find /usr -not -user root -a -not -user bin -a -not -user hadoop

~]# find /usr -not \( -user root -o -user bin -o -user hadoop \) -ls

         3、查找/etc目录下最近一周内其内容修改过,且属主不是root用户也不是hadoop用户的文件或目录;

~]# find /etc -mtime -7 -a -not \( -user root -o -user hadoop \) -ls

~]# find /etc -mtime -7 -a -not -user root -a -not -user hadoop -ls

    4、查找当前系统上没有属或属组,且最近一周内曾被访问过的文件或目录;

 ~]# find  /  \( -nouser -o -nogroup \)  -atime  -7  -ls

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

 ~]# find /etc -size +1M -type f -exec ls -lh {} \;

6、查找/etc目录下所有用户都没有写权限的文件;

 ~]# find /etc -not -perm /222 -type f -ls

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

 ~]# find /etc -not -perm -111 -type f -ls

8、查找/etc/init.d/目录下,所有用户都有执行权限,且其它用户有写权限的所有文件;

      ~]# find /etc -perm -113 -type f -ls



      

 注意:find传递查找到的文件路径至后面的命令时,是先查找出所有符合条件的文件路径,并一次性传递给后面的命令;

但是有些命令不能接受过长的参数,此时命令执行会失败;另一种方式可规避此问题:

                                                        find | xargsCOMMAND

时间: 2025-01-07 19:16:21

find详解的相关文章

Spring事务管理(详解+实例)

写这篇博客之前我首先读了<Spring in action>,之后在网上看了一些关于Spring事务管理的文章,感觉都没有讲全,这里就将书上的和网上关于事务的知识总结一下,参考的文章如下: Spring事务机制详解 Spring事务配置的五种方式 Spring中的事务管理实例详解 1 初步理解 理解事务之前,先讲一个你日常生活中最常干的事:取钱. 比如你去ATM机取1000块钱,大体有两个步骤:首先输入密码金额,银行卡扣掉1000元钱:然后ATM出1000元钱.这两个步骤必须是要么都执行要么都

转载:DenseNet算法详解

原文连接:http://blog.csdn.net/u014380165/article/details/75142664 参考连接:http://blog.csdn.net/u012938704/article/details/53468483 本文这里仅当学习笔记使用,具体细节建议前往原文细度. 论文:Densely Connected Convolutional Networks 论文链接:https://arxiv.org/pdf/1608.06993.pdf 代码的github链接:h

MariaDB(MySQL)创建、删除、选择及数据类型使用详解

一.MariaDB简介(MySQL简介略过) MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品.在存储引擎方面,使用XtraDB(英语:XtraDB)来代替MySQL的InnoDB. MariaDB由MySQL的创始人Michael Widenius(英语:Michael Widenius)主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL A

HttpServletResponse和HttpServletRequest详解

HttpServletResponse,HttpServletRequest详解 1.相关的接口 HttpServletRequest HttpServletRequest接口最常用的方法就是获得请求中的参数,这些参数一般是客户端表单中的数据.同时,HttpServletRequest接口可以获取由客户端传送的名称,也可以获取产生请求并且接收请求的服务器端主机名及IP地址,还可以获取客户端正在使用的通信协议等信息.下表是接口HttpServletRequest的常用方法. 说明:HttpServ

POSIX 线程详解(经典必看)

总共三部分: 第一部分:POSIX 线程详解                                   Daniel Robbins ([email protected]), 总裁/CEO, Gentoo Technologies, Inc.  2000 年 7 月 01 日 第二部分:通用线程:POSIX 线程详解,第 2部分       Daniel Robbins ([email protected]), 总裁/CEO, Gentoo Technologies, Inc.  20

.NET深入解析LINQ框架(五:IQueryable、IQueryProvider接口详解)

阅读目录: 1.环路执行对象模型.碎片化执行模型(假递归式调用) 2.N层对象执行模型(纵横向对比链式扩展方法) 3.LINQ查询表达式和链式查询方法其实都是空壳子 4.详细的对象结构图(对象的执行原理) 5.IQueryable<T>与IQueryProvider一对一的关系能否改成一对多的关系 6.完整的自定义查询 1]. 环路执行对象模型.碎片化执行模型(假递归式调用) 这个主题扯的可能有点远,但是它关系着整个LINQ框架的设计结构,至少在我还没有搞懂LINQ的本意之前,在我脑海里一直频

netstat状态详解

一.生产服务器netstat tcp连接状态................................................................................ 2 1.1生产服务器某个业务LVS负载均衡上连接状态数量............................................... 2 1.2生产服务器某个业务web上连接状态数量...............................................

详解go语言的array和slice 【二】

上一篇  详解go语言的array和slice [一]已经讲解过,array和slice的一些基本用法,使用array和slice时需要注意的地方,特别是slice需要注意的地方比较多.上一篇的最后讲解到创建新的slice时使用第三个索引来限制slice的容量,在操作新slice时,如果新slice的容量大于长度时,添加新元素依然后使源的相应元素改变.这一篇里我会讲解到如何避免这些问题,以及迭代.和做为方法参数方面的知识点. slice的长度和容量设置为同一个值 如果在创建新的slice时我们把

13.Linux键盘按键驱动 (详解)

版权声明:本文为博主原创文章,未经博主允许不得转载. 在上一节分析输入子系统内的intput_handler软件处理部分后,接下来我们开始写input_dev驱动 本节目标: 实现键盘驱动,让开发板的4个按键代表键盘中的L.S.空格键.回车键 1.先来介绍以下几个结构体使用和函数,下面代码中会用到 1)input_dev驱动设备结构体中常用成员如下: struct input_dev { void *private; const char *name; //设备名字 const char *ph

startActivityForResult和setResult详解

原文:startActivityForResult和setResult详解 startActivityForResult与startActivity的不同之处在于:1.startActivity( ) 仅仅是跳转到目标页面,若是想跳回当前页面,则必须再使用一次startActivity( ).2.startActivityForResult( ) 可以一次性完成这项任务,当程序执行到这段代码的时候,假若从T1Activity跳转到下一个Text2Activity,而当这个Text2Activit