find命令(系统内置,功能全面)find是CentOS下最基础且强大的文件查找工具,可根据名称、类型、大小、修改时间等多种条件递归查找文件,适合精准定位。
-name选项匹配文件名(支持通配符*),例如在/home目录下查找example.txt:find /home -name "example.txt"
忽略大小写用-iname(如-iname "Example.Txt")。-type指定文件类型,f为普通文件、d为目录、l为符号链接,例如查找/var/log下的所有日志文件(.log后缀):find /var/log -type f -name "*.log"
-mtime(修改时间,单位:天)、-mmin(修改时间,单位:分钟),例如查找/opt下7天内修改过的文件:find /opt -type f -mtime -7
-and(与)、-or(或)、-not(非)组合条件,例如查找/tmp下**大于10MB且属于用户root**的文件:find /tmp -type f -size +10M -user root
提示:若查找过程中出现“权限不够”提示,可将错误输出重定向到
/dev/null(find /path 2> /dev/null)。
locate命令(基于数据库,速度极快)locate通过预建的文件数据库(mlocate.db)快速查找文件,无需递归遍历目录,适合频繁查找已知文件名的场景,但结果非实时(需更新数据库)。
sudo yum install mlocate # 安装mlocate包
sudo updatedb # 更新文件数据库(需root权限)
example的文件:locate example
忽略大小写用-i(如locate -i EXAMPLE)。fd命令(现代化工具,更高效)fd是find的替代工具,语法更简洁、速度更快,支持彩色输出和正则表达式,适合日常快速查找。
fd:sudo yum install fd-find # CentOS 8及以上可通过EPEL仓库安装
example.txt:fd "example.txt"
.log文件:fd -e log # -e指定文件扩展名
fd -i "Example.Txt"
提示:
fd默认忽略隐藏文件和.gitignore中的文件,如需包含可加-H选项。
find与其他命令(精准过滤结果)若需进一步过滤find的结果,可通过管道(|)结合grep、ls等命令:
grep过滤文件名:例如查找/home下所有含log的文件,并显示详细信息:find /home -type f | grep "log" | xargs ls -lh
find的-exec选项:例如查找/opt下所有.conf文件并用less查看:find /opt -type f -name "*.conf" -exec less {} \;
注:
{}代表find找到的每个文件,\;表示命令结束。
以上方法覆盖了CentOS下快速查找文件的常见场景,可根据需求选择:
find;locate;fd。