欢迎您的访问
专注架构,Java,数据结构算法,Python技术分享

Linux find 命令

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

Linux find 命令Linux find 命令

 -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个重复结果 

Linux find 命令

-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)

 

原文始发于:Linux find 命令

赞(0) 打赏
版权归原创作者所有,任何形式转载请联系作者;码农code之路 博客站点 » Linux find 命令

相关推荐

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏