find
- 语法
find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path…] [expression] - 说明
默认路径为当前路径:默认表达式为-print-
选项
-H,-L和-P选项控制符号链接的处理。这些参数之后的命令行参数被视为要检查的文件或目录的名称,直到第一个参数以 `-‘,或以参数’('或`!‘开头的语句为止。该参数及随后的任何参数都应作为描述要搜索的内容的表达式。如果未给订路径,将使用当前目录。如果未给出任何表达式,则使用表达式-print
-P:不遵循符号链接,这是默认行为。当find检查或打印信息一个链接文件时,这个信息采用链接文件本身属性n.
-L:遵循符号链接
-H:不遵循符号链接,除非处理命令行参数时。
-D debugoptions:打印提示信息
help:debug参数的说明信息
tree:以原始和优化的形式显示表达式树
stat:打印测试文件的stat和lstat的信息
opt:打印与表达式树优化有关的诊断信息
rates:打印摘要,指示每个判定成功或失败的频率-Olevel:打开查询优化,level可取值为0,1,2,3
-
表达式
该表达式由选项、测试和操作组成,所有操作符均由运算符分隔。 -并假定省略了运算符。如果表达式除-prune之外不包含其他任何动作,则对表达式为true的所有文件执行-print。- 选项
-d,-depth:在目录本身之前处理每个目录的内容
-daystart:从今天开始而不是从24小时之前开始测量时间
-help,–help:打印命令行使用的摘要信息
-ignore_readdir_race:忽略当无法统计文件时,find发出的错误消息
-maxdepth levels:应用测试或动作的目录最大深度
-mindepth levels:应用测试或动作的目录最小深度
-mount:不丢弃其他文件系统的目录
-noignore_readdir_race:关闭-ignore_readdir_race效果
-noleaf:不要通过假设目录比硬链接数少2个子目录来进行优化
-regextype type:更改稍后在命令行上发生的-regex和-iregex测试所理解的正则表达式语法。当前实现的类型为emacs(这是默认设置),posix-awk,posix-basic,posix-egrep和posix-extended
-version,–version:打印find版本信息
-warn,-nowarn:打开或者关闭警告信息 - 一些测试
+n:大于n
-n:小于n
n:等于n
-amin n:n分钟之前最后访问的文件
-anewer file:文件修改前的最后访问的文件
-atime n:n天前访问的文件
-cmin n:n分钟前文件状态被修改的文件
-cnewer file:文件被修改前文件状态改变的文件
-ctime n:n天前最后被修改的文件
-empty:空文件(可以说是正常文件或者目录)
-executable:匹配可执行的文件或者可搜索的目录
-false: 设置为false
-fstype type:指定文件所在文件系统的类型
-gid n :指定文件组id
-groupname gname:指定文件所属组
-ilname pattern:忽略大小写,匹配链接文件文件名
-iname patterm:忽略大小写,匹配文件名
-inum n:指定文件inode号
-ipath pattern:忽略大小写,匹配路径
-iregex patterm:忽略大小写,匹配正则表达式
-perm mode:指定文件权限
-size n:指定文件大小
- 选项
-
操作符(优先级递减;未做任何指定时默认使用 -and):
( EXPR )
! EXPR
-not EXPR
EXPR1 -a EXPR2
EXPR1 -and EXPR2
EXPR1 -o EXPR2
EXPR1 -or EXPR2
EXPR1 , EXPR2
-
- 使用实例:
将目前目录及其子目录下所有延伸档名是 c 的文件列出来。
# find . -name "*.c"
将目前目录其其下子目录中所有一般文件列出
# find . -type f
将目前目录及其子目录下所有最近 20 天内更新过的文件列出
# find . -ctime -20
查找/var/log目录中更改时间在7日以前的普通文件,并在删除之前询问它们:
# find /var/log -type f -mtime +7 -ok rm {} \;
查找前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:
# find . -type f -perm 644 -exec ls -l {} \;
为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径:
# find / -type f -size 0 -exec ls -l {} \;
locate
在后台数据库中按文件名搜索,搜索速度更快,只能根据文件名搜索,功能单一
使用格式:
locate filename
whereis
搜索命令所在路径及帮助文档所在位置
-b: 只查找可执行文件
-m: 只查找帮助文件
which
搜索命令所在路径及别名