whereis命令和locate命令都是通过检索数据库来实现文件的查找,但find命令则是通过遍历磁盘来实现文件的查找,所以,whereis命令和locate命令的效率比find命令高,但是,由于该数据库一般不会及时更新(默认每天自动更新一次),因此,使用find命令的搜索结果比使用whereis命令和locate命令的有更好的实时性。
whereis命令
whereis命令主要用来定位一个命令(该命令的可执行文件、源代码文件和帮助文件)的路径,只能用于程序名的搜索,而且只搜索可执行文件(选项 -b )、源代码文件(选项 -s )和帮助文件(选项 -m )。一般文件的定位要用locate命令。
命令用法: whereis [选项] [文件名]
命令常用选项
-b 定位可执行文件 |
使用示例
搜索ls命令的路径 whereis ls
搜索ls命令的可执行文件的路径 whereis -b ls
查看whereis命令搜索的目录 whereis -l
locate命令
locate命令除了可以搜索命令的可执行文件、源代码文件和帮助文件外,还可以搜索一般文件。
命令用法: locate [选项] [文件名包含的信息]
命令常用选项
-a 输出所有匹配模式的文件 |
使用示例
搜索文件名中含有字符 CPU
的文件并列出来 locate CPU
搜索文件名中含有字符 CPU
的文件,并只列出前5个 locate -n 5 CPU
搜索 etc
目录下所有以 sh
开头的文件 locate /etc/sh
find命令
如果有大量的文件保存在许多不同的目录中,搜索它们就要用到find命令,可以按照文件名、文件类型、文件权限甚至是最后更新的时间来搜索文件,find命令的功能比whereis命令和locate命令都要强大,但效率较低且会消耗较多的资源。
命令用法: find [搜索路径] [查找规则]
命令常用选项
-type 查找某一类型的文件 |
-type选项参数
b 块设备文件 |
时间特征参数
amin 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