Linux find 命令

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]$ ll
total 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 aaa
drwxrwxr-x 3 oldboy oldboy 4096 Jul 27 20:42 dir1
drwxrwxr-x 2 oldboy oldboy 4096 Jul 26 09:52 dir2
drwxrwxr-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]$ ll
total 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 aaa
drwxrwxr-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 quotatab
lrwxrwxrwx.  1 oldboy oldboy      7 Jun 22 22:26 rc -> rc.d/rc
lrwxrwxrwx.  1 oldboy oldboy     10 Jun 22 22:26 rc0.d -> rc.d/rc0.d
lrwxrwxrwx.  1 oldboy oldboy     10 Jun 22 22:26 rc1.d -> rc.d/rc1.d
lrwxrwxrwx.  1 oldboy oldboy     10 Jun 22 22:26 rc2.d -> rc.d/rc2.d
lrwxrwxrwx.  1 oldboy oldboy     10 Jun 22 22:26 rc3.d -> rc.d/rc3.d
lrwxrwxrwx.  1 oldboy oldboy     10 Jun 22 22:26 rc4.d -> rc.d/rc4.d
lrwxrwxrwx.  1 oldboy oldboy     10 Jun 22 22:26 rc5.d -> rc.d/rc5.d
lrwxrwxrwx.  1 oldboy oldboy     10 Jun 22 22:26 rc6.d -> rc.d/rc6.d
drwxr-xr-x. 10 oldboy oldboy   4096 Jun 22 22:26 rc.d
lrwxrwxrwx.  1 oldboy oldboy     13 Jun 22 22:26 rc.local -> rc.d/rc.local
lrwxrwxrwx.  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 -li
total 4
658532 drwxrwxr-x 2 oldboy oldboy 4096 Aug 16 08:57 oldboydir
658534 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 oldboyfile
658530 -rw-rw-r-- 2 oldboy oldboy    0 Aug 16 08:51 oldboyfile_hard_link
658531 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	软链接文件
s	socket【套接字】文件
D	door 文件 (只有 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 file
Device: 803h/2051d      Inode: 658515      Links: 2
Access: (0151/---xr-x--x)  Uid: (  500/  oldboy)   Gid: (  500/  oldboy)
Access: 2015-08-06 23:14:06.208137726 +0800
Modify: 2015-08-10 23:14:04.347131141 +0800
Change: 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/t1
658552    0 -rw-rw-r--   1 oldboy   oldboy          0 Jul 26 09:52 ./dir1/t2
658553    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*' -ls
658543    4 -rw-rw-r--   1 oldboy   oldboy         43 Aug 19 23:08 ./ddtest
658547    4 drwxrwxr-x   2 oldboy   oldboy       4096 Jul 26 09:52 ./dir3
658541    4 -rw-rw-r--   1 oldboy   oldboy         37 Aug 19 22:56 ./dass
658545    4 drwxrwxr-x   3 oldboy   oldboy       4096 Jul 27 20:42 ./dir1
658546    4 drwxrwxr-x   2 oldboy   oldboy       4096 Jul 26 09:52 ./dir2
658536    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]$ ll
total 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]$ ll
total 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]$ ll
total 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]$ ll
total 4
drwxrwxr-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 find
find is hashed (/bin/find)

6、参考文章

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

  2linux中Find命令的使用

  3、Linux中find常见用法示例

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

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


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值