1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
| Options: -H 不跟随链接跳转,除非指定的路径是目录软链接 -L 跟随链接跳转,即显示源文件的属性 -P 不跟随链接跳转,即显示链接文件本身属性而非源文件,此为默认选项 -- 表示后面的参数都不是选项
expression: operators, options, tests, actions
operators (默认为-and): 优先级:括号() > 非(-not) > 与(-a) > 或(-o) ( EXPR ) 分组,注意括号需要转义,如\(...\) ! EXPR 取反 -not EXPR EXPR1 -a EXPR2 并且 EXPR1 -and EXPR2 EXPR1 -o EXPR2 或者 EXPR1 -or EXPR2 EXPR1 , EXPR2 德摩根定律: (非A)或(非B) = 非(A且B) (非A)且(非B) = 非(A或B) !A -a !B = !(A -o B) !A -o !B = !(A -a B)
options: 这几个选项需要在其他选项之前指定 -daystart 从今天0点开始计算,而不是当前时间开始计算.find默认是以当前时间的前24h开始计算 -regextype TYPE 指定正则表达式语法,TYPE可选参数emacs(默认),posix-awk,posix-basic,posix-egrep,posix-extended -depth 先处理每个目录下的内容,再处理目录本身 -maxdepth LEVELS 查找的最大目录层级,当前目录为1,一级子目录为2,二级子目录为3,后续依次累加 -mindepth LEVELS 最小目录层级,如为2表示不查找当前目录,而是从一级子目录开始查找 -maxdepth 3 -mindepth 3 两个目录层级相同时则只递归搜索指定层级目录 -mount 只查找和指定目录在同一文件系统下的文件 -xautofs 不查找autofs文件系统中的文件 -xdev 不查找其他文件系统中的文件 -ignore_readdir_race 在find读取目录的过程中,如果手动删除了目录中的文件,不报错 -noignore_readdir_race 读取目录中的文件失败时报错 -warn 开启警告信息 -nowarn 关闭警告信息 --version find不同版本选项可能存在差异,以下版本为find (GNU findutils) 4.5.11
tests: (N can be +N or -N or N): N为整数,+N表示在时间N之前,-N表示在时间N以内,N表示等于时间N 以-mtime选项为例 +1表示时间在48h之前,1表示时间在48-24h之间,-1表示时间在24h之内 +2表示时间在72h之前,2表示时间在72-48h之间,-2表示时间在48h之内 +3表示上次修改文件的时间mtime在4天之前,-3表示mtime在3天以内,3表示mtime等于3天 <___|___>today ^ ^ ^ +3 3 -3 -amin N 上次访问文件的时间atime,单位分钟 -atime N 上次访问文件的时间atime,单位天,24h -cmin N 上次更改文件状态的时间ctime,单位分钟 -ctime N 上次更改文件状态的时间ctime,单位天 -mmin N 上次修改文件的时间mtime,单位分钟 -mtime N 上次修改文件的时间mtime,单位天 -empty 空文件或空目录 -true true -false false -fstype TYPE 指定文件系统的类型,如xfs,ext4,tmpfs -gid N 指定gid -group NAME 指定group -inum N inode值为N的文件 -links N 链接数为N的文件 -lname PATTERN 匹配PATTERN的链接文件 -ilname PATTERN 忽略大小写匹配PATTERN的链接文件 -name PATTERN 匹配PATTERN的文件,基于文件名匹配,可用元字符包括*,?,[],[^] # PATTERN使用通配符时必须使用"或'括起来,不能包括路径 -iname PATTERN 忽略大小写匹配PATTERN的文件 -anewer FILE 比指定文件的atime更新的文件 -cnewer FILE 比指定文件的ctime更新的文件 -newer FILE 比指定文件的mtime更新的文件 -newerXY reference 参考reference属性查找目标文件 # X表示目标文件属性,可选参数a,c,m. Y表示参考属性,可选参数a,c,m,t # acm表示atime,ctime,mtime. t表示具体时间,格式为'YYYYMMDD hh:mm:ss',即可以通过date -d命令解释的时间格式 # 如-newermt '20210215 10:00:00' 表示查找mtime在指定时间之后的文件 # 如-newermt TIME1 ! -newermt TIME2 表示指定时间范围在TIME1-TIME2之间 -nouser 没有与文件的uid对应的用户,即文件的所有者显示为uid而非用户名 -nogroup 没有与文件的gid对应的用户组,即文件的所属组显示为gid而非用户组名 -path PATTERN 匹配文件名或路径,不转义/和. -ipath PATTERN 忽略大小写匹配文件名和路径 -perm [-/]MODE 匹配文件权限,有三种匹配方式 # 严格匹配mode,如指定权限777,文件权限777则匹配,其他文件权限均不匹配; # 包含匹配-mode,表示当文件权限包括指定权限时即匹配,如指定权限-555,文件权限755则匹配,文件权限644则不匹配; # 模糊匹配/mode,只要有一个权限位包含指定权限即匹配,0表示忽略权限位,如指定权限/002,文件权限666则匹配,文件权限600则不匹配 -regex PATTERN 正则匹配文件名,注意这个正则是包括路径的,所以需要以.*开头,如.*access.log -iregex PATTERN 忽略大小写的正则匹配 -readable 匹配可读文件 -writable 匹配可写文件 -executable 匹配可执行文件和可搜索目录 -samefile NAME 与指定文件inode值相同的文件,即查找硬链接文件 -size N[bcwkMG] 匹配文件大小,单位有块b(默认),字节c,双字节w,k,M,G,如+5k表示超过5k大小的文件 # N: (N-1,N],如6k表示(5k,6k],包括6k,但不包括5k # -N: [0,N-1],如-6k表示[0,5k],包括0k和5k # +N: (N,∞),如+6k表示(6k,∞),不包括6k,大于6k -type [bcdpflsD] 匹配文件类型,块文件b,字符文件c,目录d,管道文件p,普通文件f,链接文件l,套接字s -used N 上次访问文件是在上次修改文件状态的N天之后,即文件修改N天后被访问过 -uid N 指定uid -user NAME 指定user
actions: -delete 删除文件,建议先通过-ls确认文件列表然后再删除文件 -print 显示查找到的完整的文件路径 -print0 显示文件名,但是不加换行符 -printf FORMAT 指定显示格式,如\b,\n,\t,\v -fprint FILE 保存查找到的文件名到指定文件 -fprint0 FILE 保存文件名到文件,不加换行符,经测试该选项有bug无法显示所有文件名 -fprintf FILE FORMAT 指定文件格式保存 -ls 列表显示查找到的文件详情 -fls FILE 保存-ls结果到指定文件 -prune 如果文件是一个目录则不进入目录,该选项与-delete和-depth两个选项冲突,不能同时使用 -quit 立即退出 -exec COMMAND ; 执行命令,最后的分号;不能省略 -exec COMMAND {} + -ok COMMAND ; -execdir COMMAND ; -execdir COMMAND {} + -okdir COMMAND ; -ok COMMAND ; 等同于-exec,但是执行前会先询问用户 -okdir COMMAND ; 等同于-execdir,但是执行前会先询问用户
|