Linux 四大搜索查找命令
1 locate
Linux locate 命令用于查找符合条件的文件。
# 基本格式
locate keyword
locate nginx.conf
locate 的速度比 find 快,它并不是真的查找,而是查数据库,一般文件数据库在 /var/lib/slocate/slocate.db 中,所以 locate 的查找并不是实时的,而是以数据库的更新为准(所以,你可能查找不到最近的文件),一般是系统自己维护,默认情况下每天执行一次,也可以手工升级数据库 ,命令为:
updatedb
2 whereis
在Linux系统中,可执行文件称为二进制文件,当需要查找二进制文件时,whereis命令非常高效。该命令只能用于查找二进制文件、源代码文件和man手册页,一般文件的定位需使用locate命令。
# 基本格式
whereis binary
whereis python3
3 which
Linux which 命令会在环境变量$PATH设置的目录里查找符合条件的可执行文件。
# 基本格式
which binary
# 输出/bin/bash
which bash
4 find
Linux find 命令用来在指定目录下查找文件。如果使用该命令时不设置任何参数,则 find 命令将在当前目录下查找子目录与文件,并且将查找到的子目录和文件全部进行显示。
# 基本格式
find directory options expression
# 从系统根目录开始查找test.txt文件
find / -type f -name test.txt
# 在/home目录下查找所有名称为test的各种格式的文件
find /home -type f -name test.*
# 将当前目录及其子目录下所有文件后缀为.c的文件列出来
find . -name "*.c"
# 在home目录下查找文件权限不为0600或者目录权限不为0700的文件目录
find ~ \( -type f -not -perm 0600 \) -or \( -type d -not perm 0700 \)
Linux find 命令支持通配符和众多选项参数(options)
| options | 参数说明 |
|---|---|
| -type d/f/l | 文件类型,f:一般文件,l:符号连结,d:目录 |
| -size n | 文件大小,如-size +500M表示查找500M以上的文件 |
| -name name | 文件名称符合 name 的文件 |
| -iname name | 同上,iname 会忽略文件名大小写 |
| -atime n | 在过去 n 天内被读取过的文件 |
| -ctime n | 在过去 n 天内创建的文件 |
| -mtime n | 在过去 n 天内修改过的文件 |
| -perm xxxx | 按照执行权限查找 |
多条件组合参数
| 参数 | 参数说明 |
|---|---|
| -or | 或,多个条件满足其一 |
| -and | 且,多个条件同时满足 |
| -not | 相反,对条件取反 |