Linux中文件众多,有些文件我们可能不知道具体位置,这时候用find命令查找文件就方便得多。查找文件我们可以按以下几种方式去找:
1)根据文件名查找
find + 路径 + -name + 文件名
使用find命令 -name参数,在指定路径下,查找指定名称的文件名。
find /etc -name passwd
也支持模糊查询,使用通配符
* -- 通配 0 - n个字符 ?-- 通配1个字符 [] -- “[”和“]”将字符组括起来,表示可以匹配字符组中的任意一个。
查找的文件名没有通配符,可以不加引号;有通配符需要加上引号。
只在当前目录下查找,不递归,或者限制递归层次,可使用 -maxdepth参数
-mindepth作用与-maxdepth相反。
理解:
-maxdepth n 最深查找到第n层
-mindepth n 从第n层开始查找
2)根据文件大小查找
find + 路径 + -size + 范围
使用find命令-size参数。
说说范围怎么取值:
比较符:
大于多少时:使用 + 表示 小于多少时:使用 - 表示 等于多少时 : 不需要添加符号
值的单位:(man find 可看到-size取值单位)
注意:M 是大写,k 是小写。
举例:
find /etc -size 43c
看① uuid的大小是43bytes
②查找/etc路径下的等于43bytes(字节)的文件
find /etc -size +293k
看① moduli文件的大小是300261bytes(字节),转换成kilobytes(千字节):
300261/1024=293.22
这是/etc路径下最大的文件了。
②查找/etc路径下的大于293千字节的文件,moduli文件找到了,当查找条件是大于294千字节时,找不到了。
find /etc -size +200k -size -293k
查找条件可以同时输入大于和小于。
3)根据文件类型查找
find + 路径 + -type + 类型
取值范围:
1. 普通文件类型用 f 表示而不是 -
2. d -> 目录
3. l -> 符号链接
4. b -> 块设备文件
5. c -> 字符设备文件
6. s -> socket文件,网络套接字
7. p -> 管道
查找出所有的根目录
4)根据文件所属用户或用户组查找
find + 路径 + -user + 用户名 find + 路径 + -group + 用户组
查看下是不是ubuntu用户的,可使用 -ls参数
find命令除了上面介绍的参数,还有很多可当做查询条件的参数,比如:
-perm 权限 //把符合某个权限的文件给查找出来
-mmin n //过去n分钟修改过的文件
-mtime n //过去n天内修改过的文件
总结:
find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件。
find的使用格式如下:
$ find <指定目录> <指定条件> <指定动作>
- <指定目录>: 所要搜索的目录及其所有子目录。默认为当前目录。
- <指定条件>: 所要搜索的文件的特征。(-name、-size、-type、-user)
- <指定动作>: 对搜索结果进行特定的处理。(-ls)
如果什么参数也不加,find默认搜索当前目录及其子目录,并且不过滤任何结果(也就是返回所有文件),将它们全都显示在屏幕上。