在 CentOS 中查找文件是一项非常常见且重要的任务,通过使用不同的命令,可以快速定位到所需的文件或目录,以下是一些常用的方法:
find 命令
find
命令是最常见和最强大的查找命令之一,它允许用户根据各种条件搜索文件和目录。

1. 基本用法
- find [搜索范围] [搜索条件]
搜索范围:指定要搜索的目录及其所有子目录,默认为当前目录。
搜索条件:所要搜索的文件的特征,如文件名、文件类型、大小等。
2. 常用示例
1、查找名为 filename 的文件:
- find / name filename
这里的/
是根目录的意思,当然也可以指定其他路径。

2、查找所有扩展名为 .log 的文件:
- find / name "*.log"
3、查找大于 100MB 的文件:
- find / size +100M
4、查找文件夹:
- find / name 'dirname' type d
5、:
- find . | xargs grep ri 'content'
或者:
- find . | xargs grep ril 'content'
只显示文件名称。

6、模糊查询:
匹配任意内容:
匹配任意一个字符:?
匹配任意一个中括号中的字符:[]
示例:查找开头是 “牛” 的所有文件:
- find /root name "牛*"
7、根据所有者搜索:
- find /root user root
8、根据修改时间搜索:
查找 10 天前修改的文件:
- find /var/log mtime +10
查找过去 10 分钟内更新过的文件:
- find /root mmin 10
9、根据文件大小搜索:
- find /root size +2k a size 50k
10、执行特定操作:
- find /etc size +20k a size 50k exec ls lh {} \;
对搜索结果执行操作,例如显示详细信息。
locate 命令
locate
命令可以快速查找文件,但它依赖于一个数据库(通常位于/var/lib/locatedb
),这个数据库包含本地所有文件的信息,Linux 系统会自动创建并每天更新一次该数据库,因此locate
命令可能无法找到最新变动的文件,为了避免这种情况,可以先使用updatedb
命令手动更新数据库。
1. 更新数据库
- sudo updatedb
2. 查找文件
- locate filename
查找以sh
开头的文件:
- locate /etc/sh
忽略大小写:
- locate i ~/m
grep 命令
grep
命令可以在文件中搜索指定的字符串,虽然它本身不是专门用于查找文件的命令,但结合其他命令可以实现强大的搜索功能。
1. 在文件中搜索包含指定字符串的行
- grep "string" file
2. 在所有文件中搜索包含指定字符串的行
- grep r "string" /path/to/search
whereis 命令
whereis
命令只能用于程序名的搜索,而且只搜索二进制文件(参数b
)、man 说明文件(参数m
)和源代码文件(参数s
),如果省略参数,则返回所有信息。
1. 查找程序的位置
- whereis grep
which 命令
which
命令的作用是在PATH
变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果,也就是说,使用which
命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
1. 查找系统命令的位置
- which grep
type 命令
type
命令用来区分某个命令到底是由 shell 自带的,还是由 shell 外部的独立二进制文件提供的,如果一个命令是外部命令,那么使用p
参数,会显示该命令的路径,相当于which
命令。
1. 区分命令类型
- type cd
2. 显示外部命令的路径
- type p grep
命令 | 用途 | 示例 |
find | 根据各种条件搜索文件和目录 | find / name "*.log" |
locate | 快速查找文件,依赖数据库 | locate filename |
grep | 在文件中搜索指定的字符串 | grep r "string" /path/to/search |
whereis | 搜索程序名,只搜索二进制文件、man 说明文件和源代码文件 | whereis grep |
which | 在PATH 变量指定的路径中搜索系统命令的位置 | which grep |
type | 区分命令是由 shell 自带的还是外部的独立二进制文件提供的 | type p grep |
相关问答FAQs
1、如何在 CentOS 中使用find
命令查找大于 100MB 的文件?
答:可以使用以下命令来查找大于 100MB 的文件:
- find / size +100M
这条命令会在根目录下及其所有子目录中查找大于 100MB 的文件。
2、为什么有时使用locate
命令找不到某些文件?
答:locate
命令依赖于一个数据库(通常位于/var/lib/locatedb
),这个数据库包含本地所有文件的信息,Linux 系统会自动创建并每天更新一次该数据库,如果某些文件是最近创建或修改的,可能还没有被加入到数据库中,因此locate
命令可能无法找到这些文件,为了避免这种情况,可以先使用updatedb
命令手动更新数据库:
- sudo updatedb