find命令

语法格式
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 只查找程序的可执行文件 常用于查找程序的绝对路径