find按名搜索最可靠,-name区分大小写、-iname忽略大小写,通配符需加引号防shell展开;应限定路径、用-maxdepth或-prune优化范围,多条件用转义括号配合-o/-a/!组合。

直接用 find,别绕弯——它才是按名搜索最可靠、最可控的工具。
按精确或模糊名称查文件
名称匹配默认区分大小写,-name 要求完全一致,-iname 忽略大小写。通配符 * 和 ? 都支持,但必须加引号防止 shell 提前展开。
-
find /home -name "config.json":只匹配名字一模一样的文件 -
find /etc -iname "hosts":能匹配HOSTS、hosts、Hosts -
find . -name "*.log":当前目录及子目录下所有以.log结尾的文件 -
find /var -name "error???.txt":匹配error001.txt、error_ab.txt这类 3 个任意字符占位的名称
限定范围避免卡死或权限报错
从 / 开始全盘搜看似彻底,实际常因权限不足中断(比如 /root、/proc),且耗时长。优先锁定可能路径,再用 -maxdepth 控制深度,或用 -prune 跳过不想进的目录。
-
find ~/Documents -maxdepth 2 -iname "*.pdf":只查家目录下 Documents 及其一级子目录,不深挖 -
find /usr -path "/usr/src" -prune -o -iname "Makefile" -print:跳过/usr/src整个目录树,其余地方继续搜 -
find / -name "nginx.conf" 2>/dev/null:把权限错误输出丢掉,避免刷屏干扰结果
多后缀或多个关键词怎么写
find 的逻辑组合靠 -o(或)、-a(与,默认可省)、!(非),但括号必须转义或用单引号包裹,否则 shell 会误解。
-
find . \( -name "*.js" -o -name "*.ts" \):查当前目录下所有.js或.ts文件(注意\(和\)) -
find /opt -type f -iname "readme*" -mtime -7:只找普通文件,名字含readme开头,且 7 天内修改过的 -
find /tmp ! -name ".*" -iname "cache":排除隐藏文件(名字以.开头),再搜cache
真正容易被忽略的是:名称匹配永远基于**完整文件名**,不包含路径;如果你看到 find 没返回结果,先检查引号是否漏了、大小写是否对得上、目标目录是否有读取权限——而不是立刻怀疑命令写错了。


















