0%

whereis,locate,find命令笔记

whereis命令和locate命令都是通过检索数据库来实现文件的查找,但find命令则是通过遍历磁盘来实现文件的查找,所以,whereis命令和locate命令的效率比find命令高,但是,由于该数据库一般不会及时更新(默认每天自动更新一次),因此,使用find命令的搜索结果比使用whereis命令和locate命令的有更好的实时性。

whereis命令

whereis命令主要用来定位一个命令(该命令的可执行文件、源代码文件和帮助文件)的路径,只能用于程序名的搜索,而且只搜索可执行文件(选项 -b )、源代码文件(选项 -s )和帮助文件(选项 -m )。一般文件的定位要用locate命令。

命令用法: whereis [选项] [文件名]

命令常用选项

-b  定位可执行文件
-s 定位源代码文件
-m 定位帮助文件
-u 搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其他文件
-B<目录> 在指定的目录下搜索可执行文件
-S<目录> 在指定的目录下搜索源代码文件
-M<目录> 在指定的目录下搜索帮助文件
-l 查看whereis命令的搜索路径

使用示例

搜索ls命令的路径 whereis ls

搜索ls命令的可执行文件的路径 whereis -b ls

查看whereis命令搜索的目录 whereis -l

locate命令

locate命令除了可以搜索命令的可执行文件、源代码文件和帮助文件外,还可以搜索一般文件。

命令用法: locate [选项] [文件名包含的信息]

命令常用选项

-a  输出所有匹配模式的文件
-d 指定资料库的路径
-n 显示n个输出查找到的文件
-h 显示辅助信息
-q 安静模式,不会显示任何错误信息

使用示例

搜索文件名中含有字符 CPU 的文件并列出来 locate CPU

搜索文件名中含有字符 CPU 的文件,并只列出前5个 locate -n 5 CPU

搜索 etc 目录下所有以 sh 开头的文件 locate /etc/sh

find命令

如果有大量的文件保存在许多不同的目录中,搜索它们就要用到find命令,可以按照文件名、文件类型、文件权限甚至是最后更新的时间来搜索文件,find命令的功能比whereis命令和locate命令都要强大,但效率较低且会消耗较多的资源。

命令用法: find [搜索路径] [查找规则]

命令常用选项

-type		查找某一类型的文件
-name 按照文件名查找文件
-group 按照文件所属的组来查找文件
-user 按照文件所有者来查找文件
-print find命令将匹配到的文件输出到标准输出
-link 按照文件的链接数来查找文件
-size n : [c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计
-newer file1 ! file2 查找更改时间比文件file1新,但比文件file2旧的文件
-perm 按照文件权限来查找文件
-depth 在查找文件时,首先查找当前目录中的文件,然后在其子目录中查找
-prune 不在指定的目录中查找,若同时使用-depth选项,-prune将被忽略
-nogroup 查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在
-nouser 查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在
-iname 不区分字母的大小写

-type选项参数

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

时间特征参数

amin n		查找n分钟以内被访问过的所有文件
atime n 查找n天以内被访问过的所有文件
cmin n 查找n分钟以内文件状态被修改过的所有文件
ctime n 查找n天以内文件状态被修改过的所有文件
mmin n 查找n分钟以内文件内容被修改过的所有文件
mtime n 查找n天以内文件内容被修改过的所有文件

使用示例

  • 知道了某个文件的文件名,但不知道其路径 find / -name initrd.img

  • 根据部分文件名查找,当仅记得某个文件名包含几个特定的字符时,这时在查找文件名时可用通配符 *?

    find / -name *CPU*

  • 知道了某个文件的大小小于1KB

    find /bin -size -1000c

  • 查找/etc下,所有以f开头后面有四个字符的文件

    find /etc -name 'f????'

  • 查找以字母E~G(不区分大小写)开头的文件

    find /bin -iname "[E-G]*"

  • 根据文件权限查找文件,查找文件权限为777的文件

    find /bin -perm 777

  • 根据时间查找文件,查找更改时间在5天内的文件

    find /root -mtime -5

  • 根据文件类型查找文件,查找目标目录下所有的目录文件

    find /etc -type d

  • 查找文件大小大于1MB的文件

    find /bin -size +1000000c