语法格式
1 | find 【路径】【选项】【操作】 |
选项参数
选项 | 含义 |
---|---|
-name | 根据文件名查找 |
-iname | 根据文件名查找不区分大小写 |
-perm | 根据文件权限查找 |
-prune | 该选项可以排除某些目录 |
-user | 根据文件属主查找 |
-group | 根据文件属组查找 |
-mtime -n 或 +n | 根据文件更改时间查找,以天为单位 |
-mmin -n 或 +n | 根据文件更改时间查找,以分钟为单位 |
-nogroup | 查找无有效属组的文件 |
-nouser | 查找无有效属主的文件 |
-type | 按文件类型查找 |
-size -n 或 +n | 按文件大小查找 |
-mindepth n | 从n级子目录开始查找 |
-maxdepth n | 最多搜多到n级子目录 |
示例说明
-name
查找/etc目录下已conf结尾的文件
1
find /etc -name "*.conf"
-user
查找当前目录下属主食hadoop的文件
1
find . -user hadoop
-type
- f (文件)
- d (目录)
- c (字符设备文件)
- l (链接文件)
- p (管道文件)
查找当前路径下的文件
1
find . -type f
-size
- -n (大小小于n的文件)
- +n (大小大于n的文件)
查找/etc目录下小于1000的字节文件
1
find /etc -size -1000c
查找/etc目录下大于1兆的文件
1
find /etc -size +1M
-mtime
- -n (n天以内修改的文件)
- +n (n天以外修改的文件)
查找/etc目录下3天以内修改的文件且以conf结尾的文件
1
find /etc -mtime -3 -name "*.conf"
查找/etc目录下30分钟之前修改的目录
1
find /etc -mmin +30 -type d
mindepth
从/etc目录下3级子目录开始搜索文件
1
find /etc -mindepth 3 -type f
maxdepth
从/etc目录下查找文件权限为644,最多搜索到2级目录(当前位置表示一级目录)
1
find /etc -maxdepth 2 -perm 644
-prune
通常和path一起使用,用于将特定的目录排除在搜索之外
查找当前目录下所有文件,但排除log目录
1
find . -path ./log -prune -o -type f
查找当前目录下所有文件,但排除log目录和lib目录
1
find . -path ./log -prune -o -path ./lib -prune -o -type f
-exec
对搜索到文件执行特定的操作,格式为:-exec ‘command’ {} \; {} 表示find查询到的结果集
搜索/etc下的文件,文件名以conf结尾,且大小大于2K,然后将其复制到/root/hadoop目录下
1
find /etc -name "*.conf" -size +2K -type f -exec cp -r {} /root/hadoop \;
find、locate、whereis和which总结及使用场景分析
find和locate的区别
find | locate |
---|---|
在整块磁盘中搜索 | 在数据库文件中查找 |
默认是全部匹配 | 默认是模糊匹配 |
新创建的文件,使用locate命令暂时查找不到,因为后台cron任务还未执行,可以使用updatedb命令刷新locate查找的数据库,这样就能查找到刚才新建的文件了
whereis
选项 | 含义 |
---|---|
-b | 只返回二进制文件 |
-m | 只返回帮助文档文件 |
-s | 只返回源代码文件 |
which
选项 | 含义 |
---|---|
-b | 只返回二进制文件 |
各命令使用场景及优缺点
命令 | 适用场景 | 优缺点 |
---|---|---|
find | 查找某一类文件 | 功能强大,速度慢 |
locate | 只能查找单个文件 | 功能单一,速度快 |
whereis | 查找程序的可执行文件、帮助文档等 | 不常用 |
which | 只查找程序的可执行文件 | 常用于查找程序的绝对路径 |