Linux find 命令用于在目录中查找文件,以下介绍它的用法。

命令格式

find 路径 -命令参数 [输出形式]

路径:查找文件的起始路径,可以递归搜索其子目录,其中(.)点号表示查找当前目录。

命令参数:命令参数是告诉linux搜索的方式,比如我们常用的可以按照文件名字 -name 搜索,可以使用 man find 查找所有参数的意思,具体参数在后面的表格中列出。

输出形式: 输出形式可以省略,可以是 -print,-printf,-print0,-exec,-ok,-ls

find命令参数

我们常用的是-name,以下以表格的方式列出find命令的参数。

find命令参数具体含义
-name按文件名称查找
-user按文件拥有者查找
-group按文件拥有组查找
-type

按文件类型查找

b - 块设备文件。
d - 目录。
c - 字符设备文件。
p - 管道文件。
l - 符号链接文件。
f - 普通文件。
s - socket文件

-perm按文件权限查找
-exec对查找到的文件执行指定动作
-maxdepth / -mindepth指定查找范围最大/最小为第几级目录
-cmin按文件修改时间查找
-size按文件大小查找
-o / -a / -not查找条件或/且/非,它们是 or, and,not缩写

例子

1. 通过名字来查找

比如想查找nginx的配置文件在哪

[root@localhost ~]# find / -name nginx.conf
/etc/nginx/nginx.conf

2. 文件名使用通配符查找

比如想查找nginx的日志文件,但是不知道在哪个目录

find / -name *.log

正斜杠表示根目录下查找。

3. 按照文件拥有者查找

比如查找mysql用户的日志文件

[root@localhost/]# find / -user mysql -name *.log
/var/log/mysqld.log 

4. 按照文件类型查找

相应的文件类型有:

b - 块设备文件。
d - 目录。
c - 字符设备文件。
p - 管道文件。
l - 符号链接文件。
f - 普通文件。
s - socket文件
比如: 我们查找mysql的安装目录

[root@localhost/]# find / -type d -name mysql
/etc/selinux/targeted/active/modules/100/mysql
/etc/selinux/targeted/tmp/modules/100/mysql
/var/lib/mysql
/var/lib/mysql/mysql
/usr/lib64/mysql
/usr/share/mysql 

5. 按照文件大小查找

比如我们想查找大于50m的文件

[root@localhost~]# find / -type f -size +50M