一:whereis命令
这个命令的搜索速度很快。因为这个命令是在一些特定的目录里查找文件,而不是全盘查找。也可以用来搜索可执行的文件、源文件和帮助手册在系统上的位置。
格式: whereis [选项] 文件或者目录名
下表是常用的有针对性的选项:
选项 | 说明 |
-b | 显示二进制格式的文件 |
-m | 显示帮助文件所在的位置 |
-s | 显示源文件的位置 |
-l | 显示whereis的命令查找的主要目录 |
下面使用whereis命令搜索apg这个文件名,结果演示如下:
因为wheris命令的搜索范围有限,所以可能有些文件使用这个命令会找不到。
二:which命令
如果你想查找某一命令的完整文件名,可以看看which命令。这个命令专门用于查找命令的可执行文件的文件名,而且显示的是完整的文件存放路径。这个命令比较依赖PAYH这个环境变量。
格式:which [选项] 命令名称
如果你想查看所有PATH目录中匹配的命令,可以指定-a选项。查看join命令的完整路径可以直接执行which passwd命令。演示如下图所示:
三:locate命令
这个命令通过后台的数据库搜索文件,搜素速度更快,更方便的是,你可以只输入文件的部分名称就能搜索到结果。
格式:locate [选项] 模式
这里的模式是文件名,也可以是文件名的一部分。下面是几个locate命令的选项:
选项 | 说明 |
-c | 输出搜索结果的数量而不是具体的文件列表 |
-i | 在搜索时忽略字母的大小写 |
-r | 使用正则表达式的显示方式 |
默认情况下,locate通过文件名模糊匹配的方式搜索文件,如下图演示所示比如我们搜搜file2时,只要文件名包含file2文件,都会出现在搜索的结果中。我们还需要进行二次筛选。
如果显示找不到命令就利用apt install plocate进行下载软件包:
locate搜索命令搜索速度快是因为这个命令所寻找的数据都是在已建立的数据库(/var/lib/mlocate)中查找的。这个数据库默认每天更新一次数据,如果你在更新数据库之前使用locate命令搜索不到指定的文件,可以执行updatedb命令手动更新数据库。
四:find命令
find可以在指定的路径下找到你想要的文件,不过这个命令的用法比其他几个都要复杂些。
格式: find [路径] [表达式]
表达式中可以指定各种条件,如果省略路径和表达式,会显示当前目录下的所有文件或者目录,如下表所示:
表达式 | 说明 |
-name | 指定文件名搜索 |
-atime | 根据指定的时间搜索上次被存取法国的文件 |
-mtime | 根据指定时间搜索曾被修改过的文件 |
-size | 搜索符合指定大小的文件 |
-type | 按文件的类型搜索文件 |
-user | 搜索符合指定所有者文件或者目录 |
、 find命令查找文件时有涉及到时间的问题,你已经知道了mtime、arime和ctime的含义。
-atime [+]-]n : 查找存取时间超过n天(+n)、低于n天(-n) 或正好是n天的文件。
-mtime [+]-]n : 查找修改时间超过n天(+n)、不到n天(-n) 或正好是n天之前的文件。
如果你想查看五天前的那一天根目录中变动过的文件,可以书写命令find -mtime 5
演示如下图所示:
想查看某个目录下的某一个文件时,当前目录用.表示。比如在当前目录下搜索文件file3可以这样写:find . name file3,
演示如下图所示:
当我们想找出某一个用户系统里的所有文件时,可以这样写:find / home -user user1,表示在/home这个目录下搜索属于用户User1的所有文件。