如何使用find和locate 命令在Linux 中查找文件和目录?

我们在使用Linux的时候,难免要在系统中查找某个文件,比如查找xxx配置文件在哪个路径下、查找xxx格式的文件有哪些等等。
既然是Linux系统,那么使用命令行形式去查找肯定是最快最直接的方法,虽然现在有很多连接工具可以提供查找功能,但是归根到底还是利用了相关查找的命令,那么今天瑞哥就带大家来学习一下,如何用命令的形式查找文件。
因为涉及到很多骚操作,大家肯定在工作中没有全部用到,建议你先收藏本文,用到的时候记得回来查阅。
使用 find 命令在 Linux 中查找文件和目录
按名称查找文件
按部分名称查找文件
按大小查找文件
使用时间戳查找文件
按所有者查找文件
按权限查找文件
按名称查找目录
使用 locate 命令在 Linux 中查找文件和目录
按名称查找文件
按部分名称查找文件
限制搜索结果
显示匹配条目的数量
总结
find命令是 Linux 中最重要和最常用的命令之一。
使用 find 命令在 Linux 中查找文件和目录
Linux find 命令是一个强大的工具,它使系统管理员能够根据模糊的搜索条件定位和管理文件和目录,它支持按文件、文件夹、名称、创建日期、修改日期、所有者和权限进行搜索。
find 命令用于查找文件和目录并对其进行后续操作,它递归地搜索每个路径中的文件和目录,因此,当find命令遇到给定路径中的目录时,它会在其中查找其他文件和目录。
按名称查找文件
find命令的一般语法是:
让我们分解一下这个语法:
path: 定义 find 将搜索文件的起始目录。
options:控制find 进程的行为和优化方法。
expression:此属性由选项、搜索模式和操作符分隔的操作组成。
find 命令最常见的用途是按文件名搜索文件,-type f 选项告诉系统我们正在寻找一个文件,要使用文件名查找文件,请使用 带有默认命令的 标志。
例如,要搜索wljslmz.ppt 在/home 目录中命名 的 文件,您可以使用以下命令:
Linux 对文件名区分大小写,因此如果您要查找名为 的文件Wljslmz.ppt,上面显示的命令将不会返回任何结果,在这种情况下,您将需要使用该-iname选项而不是-name.
该-iname选项运行不区分大小写的搜索,因此我们可以这样做:
此命令将找到具有以下任何名称的文件:wljslmz.ppt,Wljslmz.ppt,WLJSLMZ.ppt等。
按部分名称查找文件
您可以使用文件名元字符,例如星号 *,但您应该在每个字符前放置一个转义字符\ 或将它们括在引号中。
例如,要查找所有以**.ppt**结尾的文件,您可以运行:
这与:
同样,要查找 Linux 系统上名称以 开头的所有文件wljslmz,您可以运行:
按大小查找文件
使用 find 命令,我们还可以轻松实现一些看起来很复杂的事情:找到比给定大小更大或更小的文件。
该选项上find允许我们搜索特定大小的文件,+和-前缀表示“大于”和“小于”。
下面的示例将搜索所有大于 2 GB 的文件,注意+ 符号的使用:
在上面的示例中,后缀 G 表示千兆字节,其他后缀:
c: 字节。
k: 千字节。
M: 兆字节。
上述 find 命令用于搜索所有大于指定大小的文件。
find 命令示例将搜索所有小于 100 KB 的文件,注意- 符号的使用:
如何在 Linux 中查找特定大小的文件?
使用以下命令查找大小介于 200 兆字节和 320 兆字节之间的文件:
使用时间戳查找文件
Linux 为文件系统中的每个文件分配特定的时间戳,find 命令还可以根据上次修改、访问或更改时间搜索文件。
-mtime选项用于指定文件存在的天数,表达式可以以两种方式使用:
-mtime +N 查找多N 天前修改的文件 (大于)。
-mtime -N 查找少于N 几天前修改的文件 (少于)。
如果您输入+3,它将查找/etc目录中超过 4 天的所有文件。
查找过去 24 小时内发生更改的所有文件:
使用 -mmin N 表达式来依赖分钟而不是天。
从/etc 上一分钟修改的目录中查找所有文件 。
可以组合表达式,以下是如何在 Linux 中查找不到 60 分钟前和超过 30 分钟前更改过的文件:
按所有者查找文件
要查找特定用户或组拥有的文件,请使用 -user 和 -group 选项。
例如,要在服务器的/home文件夹中查找用户wljslmz拥有的文件:
www-data在/home目录中查找属于某个组的所有文件:
按权限查找文件
该 -perm 选项允许用户搜索具有特定权限集的文件。
下面的命令将在当前目录中查找权限为 777 的文件。
使用该 - 选项意味着“至少设置了这个权限级别,以及任何更高的权限”。
此示例显示/home目录中至少具有 644 权限的所有资源,这意味着,与权限的文件,例如777,745,666,655,654,等,将匹配,同时与权限的文件642,611,600,544,等,将不匹配。
按名称查找目录
到目前为止,我们看到的所有示例都返回文件,但是,如果您只需要搜索目录,则可以使用该 -type d 参数。
换句话说,您可以find通过使用-type d标志(d表示目录)阻止Linux 中的命令搜索目录以外的其他文件类型。
查找/opt目录下名字为app的文件夹:
使用 locate 命令在 Linux 中查找文件和目录
虽然 find 是Linux 中最流行和最强大的用于文件搜索的命令行实用程序之一,但对于需要即时结果的情况来说,它的速度还不够快。
该locate命令比find命令更快,find因为它使用先前构建的数据库,而该locate命令实时搜索所有实际目录和文件。
如果 locate 未安装,您可以使用 Linux 发行版的包管理器轻松安装它。
在 Ubuntu 或任何其他 基于Debian的系统上,键入以下命令:
如果您使用的是 Fedora 或 CentOS,请改用以下命令:
Arch Linux 用户需要执行:
在locate 可以使用之前 ,需要创建数据库,这是通过updatedb 命令完成的,该 命令顾名思义就是更新数据库。
数据库将每天自动更新,但您也可以随时自行更新,以便获得最新结果。
按名称查找文件
locate命令非常易于使用。您所要做的就是将您要搜索的文件名传递给它。
就像find命令一样,locate配置为以区分大小写的方式处理查询,要让locate命令忽略区分大小写并显示大写和小写查询的结果,您需要使用该-i选项。
按部分名称查找文件
如果要搜索包含字符串的所有文件名.ppt,则可以使用locate以下方式进行搜索:
限制搜索结果
您可以使用-n选项返回搜索所需数量的结果,以避免搜索结果出现冗余 。
例如,如果您只需要查询的 20 个结果,则可以键入以下命令:
显示匹配条目的数量
要使用 locate 命令计算文件名或搜索模式的出现次数,请调用-c 选项。
总结
Linux 用户可以使用两个最广泛使用的文件搜索实用命令:find、locate,两者都是在系统上查找文件的好方法,使用哪个命令还是根据情况来。
本文应该让您对如何在 Linux 系统上查找文件有一个基本的了解,想要将搜索命令玩的溜,别忘了使用各类参数!