Linux 查找文件命令
在 Linux 中查找文件,最核心、最强大的命令是 find,其次是用于快速检索的 locate,以及用于查找可执行程序路径的 which 和 whereis。
针对你的需求,我为你整理了最实用的用法,直接照搬就能用:
1. 王牌命令:find(实时搜索,功能最全)
这是 Linux 下最强大的查找工具,它会直接遍历硬盘,结果绝对准确,但速度相对较慢。
按文件名查找(最常用):
bash# 在当前目录下查找名为 test.txt 的文件 find . -name "test.txt" # 在整个根目录下查找所有 .log 结尾的文件(忽略大小写) find / -iname "*.log" # 查找名称中包含 "conf" 的文件 find /etc -name "*conf*"按文件类型查找:
bash# 查找所有目录(文件夹) find . -type d # 查找所有普通文件 find . -type f按大小查找:
bash# 查找大于 100MB 的文件 find / -size +100M # 查找小于 10KB 的文件 find . -size -10k按时间查找:
bash# 查找最近 7 天内修改过的文件 find . -mtime -7 # 查找超过 30 天未修改的旧文件(可配合删除) find . -mtime +30查找到后执行操作(高阶技巧):
bash# 找到后删除(极其谨慎!建议先用 ls 预览) find . -name "*.tmp" -exec rm -rf {} \; # 找到后查看详细信息 find . -name "*.py" -exec ls -l {} \;
2. 闪电命令:locate(基于数据库,极快)
locate 从系统建立的数据库(/var/lib/mlocate/)中检索,速度飞快,但新创建的文件可能查不到(因为数据库每天自动更新一次)。
基本用法:
bash# 只要文件名包含 passwd 的都列出来 locate passwd忽略大小写:
bashlocate -i "readme"统计数量:
bashlocate -c "*.jpg"
💡 提示:如果刚创建的文件用
locate找不到,手动执行sudo updatedb强制更新数据库后再查。
3. 专门查“程序在哪”:which 与 whereis
这两个命令专门用来查找可执行命令/程序的位置,不查普通文件。
which:只在$PATH环境变量指定的路径中查找,告诉你当前输入命令时用的是哪个。bashwhich python # 输出:/usr/bin/pythonwhereis:范围更广,不仅找二进制程序,还找源代码和帮助手册(Man Page)。bashwhereis nginx # 输出:nginx: /usr/sbin/nginx /etc/nginx /usr/share/nginx /usr/share/man/man8/nginx.8.gz
总结速查表(选哪个?)
| 场景 | 推荐命令 | 特点 |
|---|---|---|
| 不确定位置,必须找到 | find / -name "文件名" | 绝对准,但有点慢 |
| 只记得部分文件名 | find . -name "*关键字*" | 支持* 和 ? 通配符 |
| 想找最近改过的文件 | find . -mtime -1 | 找昨天改过的文件 |
| 只要速度,不管是否最新 | locate 文件名 | 秒出结果 |
| 找命令/软件装在哪了 | which 命令 或 whereis 命令 | 专门针对程序 |
友情提醒:使用 find 配合 -exec rm 删除文件时,强烈建议先不加 -exec,只把查到的结果列出来看一眼,确认无误后再加删除操作,避免误删系统文件。