find 命令祥解

find 是linux下强大的文件搜索工具

在说这个工具前先绍下另一个Linux下的查找工具

locate : 依赖于数据库(手动生成数据库updatedb,很耗时)

非实时查找,(因为是依赖于 数据库的,数据更新有一定的间隔时段,也可以手动更新)

查找速度快

模糊查找

find: 实时查找 、速度慢、能够精确匹配

find 使用格式

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

         [查找路径]:可以省略,默认为当前工作目录
         [查找条件]:默认可以省略,默认为查找路径下的所有文件
         [处理动作]:默认为显示到屏目

        注意:查找的目录最好带上/结尾     

    查找条件:

 -name       以文件名查找

-iname      以文件名查找不区分大小写

-user        以属主查找

-group      以属组查找

-uid          以文件的UID查找

-gid          以文件的GID查找

-nouser    查找不属于任何用户的文件

-nogroup  查找不属于任何属组的文件

-prem   [+|-]MODE     按文件权限来查找

            MODE:精确匹配
            +MODE: 任何一类用户的任何一位权限匹配;常用于查找某类用户的某特定权限是否存在
          +644  需要三个位都匹配,如444,644都会匹配到
            -MODE: 每类用户的指定要检查的权限位都匹配;
          -222   只要一个文件上任何位上有写权限都能匹配 如200,220等

-atime ,-mtime,-ctime ,[+|-] # 按时间戳来查找,以天为单位

           + #:表示#+1天之外的时间
           - #:表示#天之内的时间
             #:表示#天当天的时间

-amin,mmin,cmin  [+|-] #  以分钟为单位

-type   按文件类弄查找

           f 文件
            d 目录  
            s 套接字   
            p 命名管道     
            l  链接文件 
            c 字符设备
            b 块设备

 -size [+|-] k ,M, G

           + #M:大于#M的文件
           - #M:小于#M的文件,如果是1M,0.01到1M及1M以下的都会匹配到
             # M:如果是2M,1-2M算匹配

    组合条件:
        -a: 与,同时满足
        -o: 或,

-not, !:非,取反

        -a 的优先级大于-o ;  有时需要用到括号需要反斜线转义写法:\(     \)

处理动作:

-exec COMMAND {}  \;  对查找到的文件执行命令操作。{}后有空格

-ok COMMAND {}  \;  交互式-exec

-ls  以长格式列出,查找到的文件

-print  显示,默认为此动作

| xargs COMMAND  送给管道处理



find与xargs

如果find命令直接使用管道时,find将所有匹配到的文件一起传递给exec执行。但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现 溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。

这时我们需要用到 xargs命令
    find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。

在有些系统中,使用-exec选项会为处理每一个匹配到的文件而发起一个相应的进程,并非将匹配到的文件全部作为参数一次执行;这样在有些情况下就会出现进程过多,系统性能下降的问题,因而效率不高;

而使用xargs命令则只有一个进程。另外,在使用xargs命令时,究竟是一次获取所有的参数,还是分批取得参数,以及每一次获取参数的数目都会根据该命令的选项及系统内核中相应的可调参数来确定。



示例:

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

# find /var/ -user root -a -group mail      # -a默认可以不写

2、查找/usr目录下不属于root、bin或hadoop的所用文件;

# find /usr/  -not -user root  -not -user bin  -not -user hadoop

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

4、查找当前系统上没有属主或属组,且最近1个月内曾被访问过的文件;

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

6、查找/etc/目录所有用户都没有写权限的文件;
# find /etc/ -not -perm +222
    所有都没有:相反:任何一个有
    所有都有:相反:至少有一个没有

7、查找/etc/目录下至少有一类用户没有写权限;

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

时间: 2024-10-22 03:08:52

find 命令祥解的相关文章

Linux如何关机与关机命令祥解

Linux关机命令祥解 1.直接关电源 2.init 0 3.telinit 0 4.shutdown -h now 5.halt6.poweroff 1.shutdown shutdown命令安全地将系统关机.有些用户会使用直接断掉电源的方式来关闭linux,这是十分危险的.因为linux与windows不同,其后台运行着许多进程,所以强制关机可能会导致进程的数据丢失﹐使系统处于不稳定的状态﹐甚至在有的系统中会损坏硬件设备. 而在系统关机前使用shutdown命令﹐系统管理员会通知所有登录的用

SQL Server数据库SP命令祥解

1.数据库: (1)sp_helpdb:报告有关指定数据库或所有数据库的信息. 例:sp_helpdb   --显示所有数据库信息(名称.大小等) 例:sp_helpdb Recruitment   --显示Recruitment数据库信息(名称.大小等) (2)sp_renamedb:更改数据库的名称. 例:sp_renamedb 'pubs','pub'   --将名为pubs的数据库改名为pub (3)sp_dboption:显示或更改数据库选项.不能在 master 或 tempdb 数

ping, tracert和traceroute命令详解

ping命令详解 使 用 ping可以测试计算机名和计算机的 ip 地址,验证与远程计算机的连接,通过将 icmp 回显数据包发送到计算机并侦听回显回复数据包来验证与一台或多台远程计算机的连接,该命令只有在安装了 tcp/ip 协议后才可以使用. 现在打开你的ms-dos(开始→程序→ms-dos),用win2000的朋友打开cmd.exe(这是win2000下的ms-dos,开始→程序→ 附件→"命令提示符" 或 开始→搜索文件或文件夹→"填入cmd.exe",找

ping tracert traceroute netstat命令详解

分享一下我老师大神的人工智能教程吧.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!http://www.captainbed.net 查看ubuntu运行状况的命令 1. route 查看和设置Linux系统的路由信息 2. ping:检测网络的连通性 例:ping 192.168.0.1 参数:-c 用来指定ping的回应次数 例: ping -c 4 192.168.0.1 指定回应次数为4次 3. traceroute用来分析网络拓扑 格式:tracerou

jar打包命令详解

:如何把 java 程序编译成 .exe 文件.通常回答只有两种,一种是说,制作一个可执行的 JAR 文件包,就可以像.chm 文档一样双击运行了:而另一种回答,则是使用 JET 来进行编译.但是 JET 是要用钱买的,而且,据说 JET 也不是能把所有的 Java 程序都编译成执行文件,性能也要打些折扣.所以,使用制作可执行 JAR 文件包的方法就是最佳选择了,何况它还能保持 Java 的跨平台特性.先来看看什么是 JAR 文件包: 1. JAR 文件包 JAR 文件就是 Java Archi

Linux压缩与解压缩命令详解

简介:常用的压缩命令有gzip.bzip2.tar 提示:gzip与bzip2工具不可以对目录做打包压缩操作,gzip与bzip2解压都是用-d参数(decompress=uncompress) tar命令详解: 用法:tar 模式 [选项][路径]... 模式:    -c 创建打包文件 -delete -r --append -t --list内容 -x --extract 选项:    -C --directory -f 打包后的文件名称 -j bzip格式压缩 --remove-file

(转)Linux下PS命令详解

(转)Linux下PS命令详解 整理自:http://blog.chinaunix.net/space.php?uid=20564848&do=blog&id=74654 要对系统中进程进行监测控制,查看状态,内存,CPU的使用情况,使用命令:/bin/ps (1) ps :是显示瞬间进程的状态,并不动态连续: (2) top:如果想对进程运行时间监控,应该用 top 命令: (3) kill 用于杀死进程或者给进程发送信号: (4) 查看文章最后的man手册,可以查看ps的每项输出的含义

Linux上的free命令详解

Linux上的free命令详解 转自: http://www.cnblogs.com/coldplayerest/archive/2010/02/20/1669949.html 解释一下Linux上free命令的输出. 下面是free的运行结果,一共有4行.为了方便说明,我加上了列号.这样可以把free的输出看成一个二维数组FO(Free Output).例如: FO[2][1] = 24677460 FO[3][2] = 10321516 1          2          3    

Find命令详解

find命令详解 格式 find pathname -options [ -print -exec -ok ... ] 功能 在磁盘中查找文件,并作相应处理 参数 pathname         所查找的目录,可以是相对/绝对路径 options -print 将结果输出到标准输出 -exec 'command' {} \; 对结果执行该参数所给的shell命令 -ok 与-exec作用相同,不过需要用户确认是否执行命令 -name 按照文件名查找 -perm [+-]mode 按照文件权限查