Skip to content

Linux 查找文件命令

在 Linux 中查找文件,最核心、最强大的命令是 find,其次是用于快速检索的 locate,以及用于查找可执行程序路径的 whichwhereis

针对你的需求,我为你整理了最实用的用法,直接照搬就能用:

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
  • 忽略大小写

    bash
    locate -i "readme"
  • 统计数量

    bash
    locate -c "*.jpg"

💡 提示:如果刚创建的文件用 locate 找不到,手动执行 sudo updatedb 强制更新数据库后再查。


3. 专门查“程序在哪”:whichwhereis

这两个命令专门用来查找可执行命令/程序的位置,不查普通文件。

  • which:只在 $PATH 环境变量指定的路径中查找,告诉你当前输入命令时用的是哪个。

    bash
    which python
    # 输出:/usr/bin/python
  • whereis:范围更广,不仅找二进制程序,还找源代码和帮助手册(Man Page)。

    bash
    whereis 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,只把查到的结果列出来看一眼,确认无误后再加删除操作,避免误删系统文件。

耕书屋