find 命令按名称查找文件需注意通配符引号、-iname 忽略大小写、-type 限定类型、-maxdepth 控制深度及 -path 匹配路径;不加引号或路径过广易出错。

直接用 find 加路径和 -name 或 -iname 就能按名称找文件,关键在通配符写法、大小写处理和路径范围控制。
基础写法:指定路径 + 名称模式
最常用格式是:find [路径] -name "模式"。引号必须加,否则 shell 会提前展开通配符导致出错。
-
find /etc -name "*.conf":在/etc下找所有以.conf结尾的文件 -
find . -name "config*":在当前目录及子目录中找以config开头的文件 -
find /var/log -name "syslog.[0-9]":找syslog.1、syslog.2这类单数字后缀文件([0-9]匹配一位数字)
忽略大小写:用 -iname 更实用
实际环境中文件名大小写常不确定,-iname 比 -name 更省心。
-
find . -iname "*.LOG"能匹配access.log、ERROR.LOG、MyLog等 -
find /home -iname "readme*"可同时命中README.md、readme.txt、ReadMe
精准定位:结合类型和路径限制
只靠名字容易误匹配目录或链接,加上 -type 更可靠;若只想查某一层,用 -maxdepth。
-
find /usr -maxdepth 2 -type f -iname "python*":在/usr下两层内找普通文件,名字含python(不进深层子目录) -
find ~ -type d -name "Projects":只找用户主目录下名为Projects的目录(不是文件) -
find /tmp -path "./cache/*" -iname "*.tmp":在/tmp中路径含cache/的位置找临时文件
常见问题提醒
几个容易踩的坑:
- 不加引号:如
find . -name *.log会被 shell 先展开成当前目录下已有的.log文件名,结果完全不对 - 路径写错:用
find / -name "xxx"会扫全系统,权限不足会报一堆Permission denied,建议先限定到具体目录 - 区分符号链接:默认不跟随软链接,如果目标是链接指向的文件,得加
-L选项,例如find -L /opt -iname "java"











