find - search for files in a directory hierarchy
find命令用于在目录层级中查找文件
SYNOPSIS
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]
简单用法:
find PATH EXPRESSION
EXPRESSION
Numeric arguments can be specified as
+n for greater than n,
-n for less than n,
n for exactly n.
选项太多不一一列举,常用的在下面的示例中说明,要深究的话建议查看帮助手册(英文描述其实更地道,翻译成中文有时反而难以理解,可能大家看到过一个词“句柄”,不知道大家是怎么理解的,反正我是无法理解,语句?手柄?)
EXAMPlES
1.按文件名查找,支持通配符
find 目录 -name "pattern"
2.按文件名查找,同时忽略大小写
find 目录 -iname "pattern"
3.按所属用户查找
find 目录 -user "pattern"
4.按所属用户组查找
find 目录 -group "pattern"
5.查找所属用户指定的UID的文件
find 目录 -uid "pattern"
6.查找所属用户指定的UID的文件
find 目录 -gid "pattern"
7.查找无用户的文件
find 目录 -nouser "pattern"
8.查找无用户组的文件
find 目录 -nogroup "pattern"
9.按文件类型查找
find 目录 -type TYPE
TYPE:
- f: 普通文件
- d: 目录文件
- l:符号链接文件
- b:块设备 文件
- c:字符设备文件
- p:管道文件
- s:套接字文件
10.按文件大小查找,+表示>,-表示<
find 目录 -size [+|-]n[cwbkMG]]
- b: for 512-byte blocks (this is the default if no suffix is used)
- c: for bytes
- w: for two-byte words
- k: for Kilobytes (units of 1024 bytes)
- M: for Megabytes (units of 1048576 bytes)
- G: for Gigabytes (units of 1073741824 bytes)
11.按时间戳(天数)查找,-atime(访问天数)-ctime(change天数)-mtime(修改天数)
find 目录 -atime [+|-]n
find 目录 -ctime [+|-]n
find 目录 -mtime [+|-]n
12.按时间戳(分钟)查找,-amin(访问分钟)-cmin(change分钟)-mmin(修改分钟)
find 目录 -amin [+|-]n
find 目录 -cmin [+|-]n
find 目录 -mmin [+|-]n
13.按权限查找
mode:精确匹配
/mode:任何一类用户(u,g,o)的权限中的任何一位(r,w,x)符合条件即满足;9位权限之间存在“或”关系;
-mode:每一类用户(u,g,o)的权限中的每一位(r,w,x)同时符合条件即满足;9位权限之间存在“与”关系;
find 目录 -perm [/|-]mode
选项组合
-a:与
-o:或
-not/!:非
处理动作
-exec 命令... {} \;
#示例:查找当前目录下.txt后缀,并且1天内修改过的文件
find ./ -name "*.txt" -a -mtime -1 -exec ls -lh {} \;
注意
find传递查找到的文件路径至后面的命令时,是先查找出所有符合条件的文件路径,并一次性传递给后面的命令;但是有些命令不能接受过长的参数,此时命令执行会失败;
另一种方式可规避此问题:
find | xargs COMMAND