Linux find 命令

来源:互联网 发布:婴儿学说话软件 编辑:程序博客网 时间:2024/05/21 18:45

2015-08-10 创建

1、概述

  在目录层次中查找文件

2、命令格式

  find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]    

    其实[-H] [-L] [-P] [-D debugopts] [-Olevel]这几个选项并不常用(至少在我的日常工作中,没有用到过),上面的find命令的常用形式可以简化为:

  find [path...] [expression]

  path:find命令所查找的目录路径。例如用 . 或者 ./ 来表示当前目录,用/来表示系统根目录

  expression:expression可以分为——“-options [-print -exec -ok ...]” 

  -options,指定find命令的常用选项,下节详细介绍 

  -print,find命令将匹配的文件输出到标准输出

  -exec,find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' {} \;,注意{}和\;之间的空格

        1、为了用ls -l命令列出所匹配到的文件,可以把ls -l命令放在find命令的-exec选项中:find ./ -type f -exec ls -l {} \;

        2、在/logs目录中查找更改时间在5日以前的文件并删除它们:find /logs -type f -mtime +5 -exec rm {} \;

  -ok,和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。【不常用】

        1、find . -name "*.log"  -mtime +5 -ok rm {} \; 在当前目录中查找所有文件名以.log结尾、更改时间在5日以上的文件,并删除它们,只不过在删除之前先给出提示


3、常用命令格式

  表达式有 options【总是返回 true】,tests【返回true或者false】 和 actions【返回true或者false】 组成

  如果表达式没有包含 actions 除了 -prune, -print,那么执行所有文件为 true

  表达式:

 选项:

        -d    和 -depth 是相同的 【已过时】【不过执行该选项时,会报警告】

        -daystart    估量时间(对于 -amin, -atime, -cmin, -ctime, -mmin, 和 -mtime)从今天开始而不是24小时之前。

        -depth    查找目录中的内容,然后再查找目录自身。对于 -delete 操作而言,也要使用该选项

[oldboy@moban ~]$ find ./oldboy./oldboy   # 目录有内容./oldboy/dir3./oldboy/dir1# 先目录后目录中的内容./oldboy/dir1/t1./oldboy/dir1/t2./oldboy/dir1/bbb./oldboy/dir1/t3./oldboy/dir2[oldboy@moban ~]$ find ./oldboy -depth./oldboy/dir3./oldboy/dir1/t1./oldboy/dir1/t2./oldboy/dir1/bbb./oldboy/dir1/t3./oldboy/dir1# 先目录中的内容后目录./oldboy/dir2./oldboy# 目录有内容【放到了最后】
        -maxdepth levels    查找的最大深度【层级】。如: find /etc/ -maxdepth 2

        -mindepth levels    查找的最小深度【层级】。 find ./oldboy -mindepth 1 代表查询所有文件

        -mount    在当前的文件系统中查找文件(不进入其他文件系统)

  测验【也不知道翻译的适不适合】

        数字参数可以被指定【这个很重要】,如下:

            +n     for greater than n, 大于数字n

            -n     for less than n,小于数字n

            n      for exactly n.正好是n


        -amin n    最近 n 分钟前 那时刻【前n分钟内】文件被访问。如下

[oldboy@moban oldboy]$ find ./ -amin +5   # 前5分钟之前被访问【6分钟之前】./.dir1./dir1/bbb./dir1/t3./dir2[oldboy@moban oldboy]$ find ./ -amin -5# 前5分钟到当前时间被访问【0-5 不包含 5】././a4[oldboy@moban oldboy]$ find ./ -amin 5 # 前5-6(不包含6)分钟被访问./aaa
        -anewer file    文件或目录的最近访问时间比 file 的最近修改时间还要新【离当前时间更近】
[oldboy@moban oldboy]$ lltotal 36-rw-rw-r-- 1 oldboy oldboy   27 Aug  6 23:34 a3-rw-rw-r-- 1 oldboy oldboy    0 Aug 14 13:00 a4-rw-rw-r-- 1 oldboy oldboy    0 Aug 14 17:00 a5-rw-rw-r-- 1 oldboy oldboy   46 Aug  3 21:50 aaadrwxrwxr-x 3 oldboy oldboy 4096 Jul 27 20:42 dir1drwxrwxr-x 2 oldboy oldboy 4096 Jul 26 09:52 dir2drwxrwxr-x 2 oldboy oldboy 4096 Jul 26 09:52 dir3-rw-rw-r-- 1 oldboy oldboy   37 Aug  6 23:39 log.txt[oldboy@moban oldboy]$ find ./ -anewer a4././a5
        -atime n    文件或目录在 n*24 小时之前【那一天】被访问

[oldboy@moban oldboy]$ lltotal 36-rw-rw-r-- 1 oldboy oldboy   12 Aug  6 23:14 a1-rw-rw-r-- 1 oldboy oldboy   35 Aug  6 23:24 a2-rw-rw-r-- 1 oldboy oldboy   27 Aug  6 23:34 a3-rw-rw-r-- 1 oldboy oldboy    0 Aug 14 13:00 a4-rw-rw-r-- 1 oldboy oldboy    0 Aug 14 17:00 a5-rw-rw-r-- 1 oldboy oldboy   46 Aug  3 21:50 aaadrwxrwxr-x 3 oldboy oldboy 4096 Jul 27 20:42 dir1-rw-rw-r-- 1 oldboy oldboy   37 Aug  6 23:39 log.txt[oldboy@moban oldboy]$ find ./ -atime 4# 4-5(不包含5)天,前被访问./a4./a5[oldboy@moban oldboy]$ find ./ -atime -4# 4(不包含)天前到当前时间内被访问././.dir1./dir1./dir1/bbb[oldboy@moban oldboy]$ find ./ -atime +4# 5(包含)天前到更早的时间段被访问./a2./a3./aaa./dir1/t1./dir1/t2./dir1/t3./log.txt./a1
        -cmin n    文件或目录的状态被改变在前 n 分钟的时候 【前 n 分钟那段时间内】

        -cnewer file    文件或目录的状态被改变比 file 的修改时间更新【离当前时间更近】

        -ctime n    文件或目录的状态被改变 在前 n*24 那一天内

        -mmin n    文件或目录的最近修改时间是在前 n 分钟的时候

        -newer file    文件或目录的最近修改时间比 file的修改时间 更新【离当前时间更近】

        -mtime n    文件或目录的最近修改时间是在前 n*24 小时的时候

    这六个的示例可以参照 前面的示例。

        -empty    常规文件或者目录为空的【文件或目录为空 满足条件】

        -gid n     文件或目录的属组ID 是  n

        -group gname    文件或目录的属组名称是 gname 

        -inum n    文件或目录的 inode 数为 n

        -ilname pattern    就像 -lname,但是大小写不明感

        -iname pattern    就像 -name,但是大小写不明感

         -iregex pattern    就像-regex  ,但是大小写不明感

        -iwholename pattern    就像 -wholename ,但是大小写不明感

        -links n    文件或目录有 n 个连接

        -lname pattern    文件或目录是链接文件,并且链接内容匹配 pattern

[oldboy@moban oldboy]$ ll /etc/ # 部分内容total 36-rw-r--r--.  1 oldboy oldboy   6455 Jan 12  2010 protocols-rw-r--r--.  1 oldboy oldboy    220 Oct 14  2008 quotagrpadmins-rw-r--r--.  1 oldboy oldboy    259 Nov 22  2013 quotatablrwxrwxrwx.  1 oldboy oldboy      7 Jun 22 22:26 rc -> rc.d/rclrwxrwxrwx.  1 oldboy oldboy     10 Jun 22 22:26 rc0.d -> rc.d/rc0.dlrwxrwxrwx.  1 oldboy oldboy     10 Jun 22 22:26 rc1.d -> rc.d/rc1.dlrwxrwxrwx.  1 oldboy oldboy     10 Jun 22 22:26 rc2.d -> rc.d/rc2.dlrwxrwxrwx.  1 oldboy oldboy     10 Jun 22 22:26 rc3.d -> rc.d/rc3.dlrwxrwxrwx.  1 oldboy oldboy     10 Jun 22 22:26 rc4.d -> rc.d/rc4.dlrwxrwxrwx.  1 oldboy oldboy     10 Jun 22 22:26 rc5.d -> rc.d/rc5.dlrwxrwxrwx.  1 oldboy oldboy     10 Jun 22 22:26 rc6.d -> rc.d/rc6.ddrwxr-xr-x. 10 oldboy oldboy   4096 Jun 22 22:26 rc.dlrwxrwxrwx.  1 oldboy oldboy     13 Jun 22 22:26 rc.local -> rc.d/rc.locallrwxrwxrwx.  1 oldboy oldboy     15 Jun 22 22:26 rc.sysinit -> rc.d/rc.sysinit[oldboy@moban ~]$ find /etc/ -maxdepth 1 -lname 'rc.d*'# 部分内容./etc/rc3.d./etc/rc./etc/rc.sysinit./etc/rc5.d./etc/rc2.d./etc/rc4.d./etc/rc0.d./etc/rc1.d./etc/rc.local./etc/rc6.d
        -name pattern    通配符匹配文件名称

        -nogroup    查找无效属组文件

        -nouser    查找无效属主文件

        -path pattern    模式匹配文件或目录名称。对‘/’ 和 ‘.’ 不会进行特殊处理。【全路径匹配】

[oldboy@moban ~]$ find ./ -path './oldboy*'./oldboy.txt./oldboy./oldboy/a5./oldboy/a3./oldboy/aaa./oldboy/dir3./oldboy/dir1./oldboy/dir1/t1./oldboy/dir1/t2./oldboy/dir1/bbb./oldboy/dir1/t3./oldboy/dir2./oldboy/log.txt./oldboy/a1[oldboy@moban ~]$ find ./ -path './oldboy.*'./oldboy.txt[oldboy@moban ~]$ find ./ -path './oldb.*'  [oldboy@moban ~]$ find ./ -path './oldboy/d*'./oldboy/dir3./oldboy/dir1./oldboy/dir1/t1./oldboy/dir1/t2./oldboy/dir1/bbb./oldboy/dir1/t3./oldboy/dir2

        -perm mode    文件权限精确匹配(支持八进制【最好用这个】和符号模式'u','g','o'),【比喻:让你做什么就做什么,其他的都不能做】

            其中:'find ./ -perm 755' 匹配权限为 rwxr-xr-x 的文件;'find ./ -perm g=w' 匹配权限为 ----w---- 的文件。

[oldboy@moban ~]# find ./ -perm 755./scf./scf/lib./scf/service./scf/service/deploy./scf/service/deploy/product./scf/service/deploy/info./scf/doc./scf/bin
        -perm -mode    这个也很简单,只是描述起来比较复杂。怎么说呢,就是匹配 -perm 中有该位权限的文件。‘find ./ -perm -000’ 全部文件匹配

             【比喻:完成任务后,就可以做其他事儿了】

             如:-perm -061 那么就是匹配权限为 ???rw???x【或则???42??1】 的文件,至于? 就是代表这个权限可有可没有。

             如:-perm -o=x 那么就是匹配权限为 ????????x【或则???????1】 的文件,至于? 就是代表这个权限可有可没有。

           只要匹配位有权限就行了,其他位可以有权限,也可以没有权限。【贪婪匹配、最大限度匹配】
        -perm /mode    这个和上一个比较起来,差不多,只是匹配上更贪婪一些。

             【比喻:只要完成一点任务,就可以做其他事儿了】

             如:-perm /061  就是匹配文件权限为 ???rw???x【或则???42??1】 中至少满足的一个就行了。即这些权限满足其中一个就行了。【如:???rw???x,????????x,????w????,……】,至少满足其中一个,也可以全满足。

             如: -perm /o=rx 就是匹配文件权限为 ??????r?x【或则?????4?1】 中至少满足的一个就行了。即这些权限满足其中一个就行了。【如:??????r?x,????????x,??????r??】,至少满足其中一个,也可以全满足。

             至于? 就是代表这个权限可有可没有

             至少满足其中一个,也可以全满足【极度贪婪匹配、毫无下限的匹配】

             注意:如果要匹配所有文件那么请使用 find ./ -perm -000 而不是 find ./ -perm /000

        -perm +mode    已过时, 使用 -perm /mode 替代

        -regex pattern    正则匹配。【全路径匹配】 正则表达式可参见:Linux grep 命令

        -samefile name    根据文件名称匹配具有相同 inode 的文件【匹配硬链接文件】。当 -L 生效时,同时也包含软链接匹配。

[oldboy@moban oldboy]$ ls -litotal 4658532 drwxrwxr-x 2 oldboy oldboy 4096 Aug 16 08:57 oldboydir658534 lrwxrwxrwx 1 oldboy oldboy   10 Aug 16 08:57 oldboydir_soft_link -> oldboydir/658530 -rw-rw-r-- 2 oldboy oldboy    0 Aug 16 08:51 oldboyfile658530 -rw-rw-r-- 2 oldboy oldboy    0 Aug 16 08:51 oldboyfile_hard_link658531 lrwxrwxrwx 1 oldboy oldboy   10 Aug 16 08:52 oldboyfile_soft_link -> oldboyfile[oldboy@moban oldboy]$ find ./ -samefile oldboyfile  # 硬链接匹配./oldboyfile./oldboyfile_hard_link[oldboy@moban oldboy]$ find -L ./ -samefile oldboyfile# 硬链接和软链接匹配./oldboyfile./oldboyfile_soft_link./oldboyfile_hard_link
    -size n[cwbkMG]    文件使用 n 空间单位查找。以下后缀可以使用:
        'b' 512 字节 块(没有后缀时,系统默认使用)
        'c' 字节为单位
        'w' 两个字节为单位
        'k' 以 k 为单位【小写】
        'M' 以 M 为单位
        'G' 以 G 为单位
实例1:在当前目录下查找文件长度大于1 M字节的文件  命令:find . -size +1M -print实例2:在/home/apache目录下查找文件长度恰好为100字节的文件:  命令:find /home/apache -size 100c -print  实例3:在当前目录下查找长度超过10块的文件(一块等于512字节) 命令:find . -size +10 -print

    -true    总是为 true

    -false    总是 false

    -type c    文件类型 c 可以为

b  块文件c字符文件d目录文件p管道文件f普通文件l软链接文件ssocket【套接字】文件Ddoor 文件 (只有 Solaris 系统才有)【通常不会使用】

    -uid n    文件的UID【属主ID】 为 n

    -used n    文件的最近访问时间是他最近改变时间的 n 天【那一天之内】后  【n 支持 n  +n  -n】

[oldboy@moban oldboy]$ stat a1  File: `a1'  Size: 12              Blocks: 8          IO Block: 4096   regular fileDevice: 803h/2051d      Inode: 658515      Links: 2Access: (0151/---xr-x--x)  Uid: (  500/  oldboy)   Gid: (  500/  oldboy)Access: 2015-08-06 23:14:06.208137726 +0800Modify: 2015-08-10 23:14:04.347131141 +0800Change: 2015-08-17 17:29:24.766060232 +0800[oldboy@moban oldboy]$ [oldboy@moban oldboy]$ find ./ -name 'a1' -used 11./a1[oldboy@moban oldboy]$ find ./ -name 'a1' -used 10[oldboy@moban oldboy]$ find ./ -name 'a1' -used 12[oldboy@moban oldboy]$ find ./ -name 'a1' -used -12./a1[oldboy@moban oldboy]$ find ./ -name 'a1' -used +12
    -user uname    根据文件的属主匹配【也可以将 uname 变为 uid】

    -wholename pattern    参见 -path 。这种方案不比 -path 轻便。

[oldboy@moban oldboy]$ find ./ -wholename './d*t*'./dir1/t1./dir1/t2./dir1/t3
   -writable    匹配可写的文件

    -xtype c    和 -type c 一样,除非文件是软链接文件


  动作
    -delete    不推荐使用【很少使用】。删除文件,如果执行状态码为 0 则为true;如果失败那么 得到错误信息【递归删除】

    -exec command ;    从下面的结果上看,前面有多少匹配,那么就执行该命令选项中的  command  多少次。

[oldboy@moban oldboy]$ find ./ -name 'a*'./a2./a5./a3./aaa./a1./a4./a01[oldboy@moban oldboy]$ find ./ -name 'a*' -exec ls -l \;共有7个重复结果


    -exec command {} ;     {} 和 ; 之间有空格。将前面的结果执行一次。

[oldboy@moban oldboy]$ find ./ -name 'a*' -exec ls -l {} \;   # ; 在特殊字符,所以需要转义字符 \-r--rw-r-- 1 oldboy oldboy 35 Aug  6 23:24 ./a2-rw-rw-r-- 1 oldboy oldboy 0 Aug 14 17:00 ./a5-rw-rw-r-- 1 oldboy oldboy 27 Aug  6 23:34 ./a3-rw-rw-r-- 1 oldboy oldboy 46 Aug  3 21:50 ./aaa---xr-x--x 2 oldboy oldboy 12 Aug  6 23:14 ./a1-rw-rw-r-- 1 oldboy oldboy 0 Aug 14 13:00 ./a4---xr-x--x 2 oldboy oldboy 12 Aug  6 23:14 ./a01
    -exec command {} +    是-exec 的变异体。将前面的结果执行一次。

[oldboy@moban oldboy]$ find ./ -name 'a*' -exec ls -l {} +---xr-x--x 2 oldboy oldboy 12 Aug  6 23:14 ./a01---xr-x--x 2 oldboy oldboy 12 Aug  6 23:14 ./a1-r--rw-r-- 1 oldboy oldboy 35 Aug  6 23:24 ./a2-rw-rw-r-- 1 oldboy oldboy 27 Aug  6 23:34 ./a3-rw-rw-r-- 1 oldboy oldboy  0 Aug 14 13:00 ./a4-rw-rw-r-- 1 oldboy oldboy  0 Aug 14 17:00 ./a5-rw-rw-r-- 1 oldboy oldboy 46 Aug  3 21:50 ./aaa
    -fls file    总是 true,就像ls 一样,只是向一个文件输入信息。【结果像 ls -dils】。文件 file 不存在就创建后添加,存在就覆盖重新添加。

[oldboy@moban oldboy]$ find ./ -name 't*'./dir1/t1./dir1/t2./dir1/t3[oldboy@moban oldboy]$ find ./ -name 't*' -fls ddtest[oldboy@moban oldboy]$ cat ddtest # 第二列代表什么 暂时还不清楚658551    0 -rw-rw-r--   1 oldboy   oldboy          0 Jul 26 09:52 ./dir1/t1658552    0 -rw-rw-r--   1 oldboy   oldboy          0 Jul 26 09:52 ./dir1/t2658553    0 -rw-rw-r--   1 oldboy   oldboy          0 Jul 26 09:52 ./dir1/t3
    -fprint file    总是true,将前面的结果,输入到 file 文件中。file 没有就创建,有就覆盖
[oldboy@moban oldboy]$ find ./ -name 'a*'./a2./a5./a3./aaa./a1./a4./a01[oldboy@moban oldboy]$ find ./ -name 'a*' -fprint ddtest [oldboy@moban oldboy]$ cat ddtest ./a2./a5./a3./aaa./a1./a4./a01
    -fprint0 file    总是true,结果没有换行
[oldboy@moban oldboy]$ find ./ -name 'd*' -fprint0 ddtest  [oldboy@moban oldboy]$ cat ddtest ./ddtest./dir3./dass./dir1./dir2./ddd[oldboy@moban oldboy]$ 
    -fprintf file format    总是true,就像-printf,但是会想file文件写入信息,就像-fprint

    -ls    总是true,结果标准输出,就像ls -dils

[oldboy@moban oldboy]$ find ./ -name 'd*' -ls658543    4 -rw-rw-r--   1 oldboy   oldboy         43 Aug 19 23:08 ./ddtest658547    4 drwxrwxr-x   2 oldboy   oldboy       4096 Jul 26 09:52 ./dir3658541    4 -rw-rw-r--   1 oldboy   oldboy         37 Aug 19 22:56 ./dass658545    4 drwxrwxr-x   3 oldboy   oldboy       4096 Jul 27 20:42 ./dir1658546    4 drwxrwxr-x   2 oldboy   oldboy       4096 Jul 26 09:52 ./dir2658536    0 -rw-rw-r--   1 oldboy   oldboy          0 Aug 19 22:15 ./ddd
    -print    总是true,打印文件的对应全名【相对路径名+文件名】用于标准输入

[oldboy@moban oldboy]$ find ./ -name 'd*'  ./ddtest./dir2./dir2/ddttt./ddd[oldboy@moban oldboy]$ find ./ -name 'd*' -print./ddtest./dir2./dir2/ddttt./ddd
    -print0    总是true,就像 -print ,但是没有换行

[oldboy@moban oldboy]$ find ./ -name 'd*' -print0./ddtest./dir3./dass./dir1./dir2./dir2/ddttt./ddd[oldboy@moban oldboy]$ 
    -printf format    总是true,对输出信息格式化。具体请参见文档

    -prune    总是true,如果文件是目录,那么就不再往目录里面查询。如果使用了 -dept 那么当前选项 -prune 无效,返回false。因为-delete 意味着-depth ,你不可能将 -prune 和 -delete 一块儿使用。

  

4、常用示例

  示例:【来源于手册】

    find /tmp -name core -type f -print | xargs /bin/rm -f    在目录 /tmp 下【包括他的子目录】查找文件名为 core 的文件并删除。

        注意:如果文件名包含换行符,单引号或双引号,有空格;那么执行该操作时会发生错误,或者过滤掉前面说到的文件。

[oldboy@moban oldboy]$ lltotal 4-rw-rw-r-- 1 oldboy oldboy    0 Aug 20 19:29 aaa-rw-rw-r-- 1 oldboy oldboy    0 Aug 20 19:25 aa bb-rw-rw-r-- 1 oldboy oldboy    0 Aug 20 19:29 ab"db-rw-rw-r-- 1 oldboy oldboy    0 Aug 20 19:29 ab'rrr'[oldboy@moban oldboy]$ find ./ -name 'a*' ./ab'rrr'./ab"db./aaa./aa bb[oldboy@moban oldboy]$ find ./ -name 'aa*' ./aaa./aa bb[oldboy@moban oldboy]$ find ./ -name 'aa*' | xargs /bin/rm -f  # 正常执行,但是带有空格的文件被过滤掉了[oldboy@moban oldboy]$ lltotal 4-rw-rw-r-- 1 oldboy oldboy    0 Aug 20 19:25 aa bb-rw-rw-r-- 1 oldboy oldboy    0 Aug 20 19:29 ab"db-rw-rw-r-- 1 oldboy oldboy    0 Aug 20 19:29 ab'rrr'[oldboy@moban oldboy]$ find ./ -name 'a*' | xargs /bin/rm -f # 执行错误,打印了错误信息    quote 引号xargs: unmatched double quote; by default quotes are special to xargs unless you use the -0 option
    find /tmp -name core -type f -print0 | xargs -0 /bin/rm -f    【推介使用】在目录 /tmp 下【包括他的子目录】查找文件名为 core 的文件并删除。即使文件名包含换行符,单引号、双引号,空格;用这个方法也能正确处理。-name 在 -type 之前是为了避免查询的每个文件都去调用 stat(2) 命令
[oldboy@moban oldboy]$ lltotal 4-rw-rw-r-- 1 oldboy oldboy    0 Aug 20 19:25 aa bb-rw-rw-r-- 1 oldboy oldboy    0 Aug 20 19:29 ab"db-rw-rw-r-- 1 oldboy oldboy    0 Aug 20 19:29 ab'rrr'drwxrwxr-x 2 oldboy oldboy 4096 Aug 16 08:57 dir[oldboy@moban oldboy]$ find ./ -name 'a*' ./ab'rrr'./ab"db./aa bb[oldboy@moban oldboy]$ find ./ -name 'a*' -print0# 没有换行./ab'rrr'./ab"db./aa bb[oldboy@moban oldboy]$ find ./ -name 'a*' -print0 | xargs -0 /bin/rm -f# 请记住格式 xargs -0 是数字零不是字母o 或 O[oldboy@moban oldboy]$ lltotal 4drwxrwxr-x 2 oldboy oldboy 4096 Aug 16 08:57 dir
    find $HOME -mtime 0    在你的家目录下查询文件,并且匹配文件的修改时间在24小时以内的文件。

    find /sbin /usr/sbin -executable \! -readable -print    在/sbin /usr/sbin 查询文件,匹配的文件可执行,但是不可读。 \! 不能……【对之后的选项取反】。

    find . -perm 664  查找当前目录下, 文件权限为 rw-rw-r-- 的文件或目录【精确匹配,其他的权限不可有】

    find . -perm -664   查询当前目录下,文件权限至少为 u=rw, g=rw, o=r 的文件或目录【最少权限为,其他的权限可有可无】

    find . -perm /222    查询当前目录下,文件权限可有 u=w, g=w, o=w 中的一个或多个【只要有一个满足即可,其他的权限可有可无】

    find . -perm /220    find . -perm /u+w,g+w    find . -perm /u=w,g=w    3个都是一个意思。匹配的文件至少有 u=w, g=w。其他位权限任意

    find . -perm -220    find . -perm -g+w,u+w   2个都是一个意思。匹配的文件必须有 u=w g=w 其他位的权限任意

    find . -perm -444 -perm /222 ! -perm /111    find . -perm -a+r -perm /a+w ! -perm /a+x  

            2个是一个意思。匹配的文件必须有 u,g,o = r,至少有u,g,o = w 中的一个,都没有 u,g,o = x 


5、位置和类型

[oldboy@moban oldboy]$ which find/bin/find[oldboy@moban oldboy]$ type findfind is hashed (/bin/find)

6、参考文章

  1、每天一个linux命令(22):find 命令的参数详解

  2linux中Find命令的使用

  3、Linux中find常见用法示例

  4、Linux下find 命令用法详解+实例

  5、linux中强大且常用命令:find、grep


0 0
原创粉丝点击