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
。