搜索命令

whereis 命令

whereis 是搜索系统命令的命令(像绕口令一样),也就是说,whereis 命令不能搜索普通文件, 而只能搜索系统命令。whereis 命令的基本信息如下。

  • 命令名称:whereis。
  • 英文原意:locate the binary, source, and manual page files for a command。
  • 所在路径:/usr/bin/whereis。
  • 执行权限:所有用户。
  • 功能描述:查找二进制命令、源文件和帮助文档的命令。

which 命令

which 也是搜索系统命令的命令。和 whereis 命令的区别在于:

  • whereis 命令可以在查找到二进制命令的同时,查找到帮助文档的位置;
  • 而 which 命令在查找到二进制命令的同时,如果这个命令有别名,则还可以找到别名命令。

locate 命令

基本用法 locate 命令才是可以按照文件名搜索普通文件的命令。

  • 优点:按照数据库搜索,搜索速度快,消耗资源小。数据库位置/var/lib/mlocate/mlocate.db, 可以使用​​updatedb​​ 命令强制更新数据库。
  • 缺点:只能按照文件名来搜索文件,而不能执行更复杂的搜索,比如按照权限、大小、修改时间等搜索文件。

locate 命令的基本信息如下。

  • 命令名称:locate。
  • 英文原意:find files by name。
  • 所在路径:/usr/bin/locate。
  • 执行权限:所有用户。
  • 功能描述:按照文件名搜索文件。

配置文件

[root@localhost ~]# vi /etc/updatedb.conf
PRUNE_BIND_MOUNTS = "yes"

#开启搜索限制,也就是让这个配置文件生效
PRUNEFS = "……"

#在 locate 执行搜索时,禁止搜索这些文件系统类型
PRUNENAMES = "……"

#在 locate 执行搜索时,禁止搜索带有这些扩展名的文件
PRUNEPATHS = "……"

#在 locate 执行搜索时,禁止搜索这些系统目录

find 命令

find 命令的基本信息如下。

  • 命令名称:find。
  • 英文原意:search for files in a directory hierarchy。
  • 所在路径:/bin/find。
  • 执行权限:所有用户。
  • 功能描述:在目录中搜索文件。

按照文件名搜索

[root@localhost ~]# find 搜索路径 [选项] 搜索内容
选项:
-name: 按照文件名搜索
-iname: 按照文件名搜索,不区分文件名大小写
-inum: 按照 inode 号搜索

按照文件大小搜索

[root@localhost ~]# find 搜索路径 [选项] 搜索内容
选项:
-size [+|-]大小: 按照指定大小搜索文件

这里的“+”的意思是搜索比指定大小还要大的文件,“-”的意思是搜索比指定大小还要小的文件。

find 命令的单位:

[root@localhost ~]# man find
-size n[cwbkMG]

File uses n units of space. The following suffixes can be used:
'b' for 512-byte blocks (this is the default if no suffix is used)

#这是默认单位,如果单位为 b 或不写单位,则按照 512 Byte 搜索

'c' for bytes

#搜索单位是 c ,按照字节搜索

'w' for two-byte words

#搜索单位是 w ,按照双字节(中文)搜索

'k' for Kilobytes (units of 1024 bytes)

#按照 KB 单位搜索,必须是小写的 k

'M' for Megabytes (units of 1048576 bytes)

#按照 MB 单位搜索,必须是大写的 M

'G' for Gigabytes (units of 1073741824 bytes)

#按照 GB 单位搜索,必须是大写的

按照修改时间搜索

Linux 中的文件有访问时间(atime)、数据修改时间(mtime)、状态修改时间(ctime)这三个 时间,我们也可以按照时间来搜索文件。

[root@localhost ~]# find 搜索路径 [选项] 搜索内容
选项:
-atime [+|-]时间: 按照文件访问时间搜索
-mtime [+|-]时间: 按照文件数据修改时间搜索
-ctime [+|-]时间: 按照文件状态修改时间搜索

这种方法非常简单,输出的帮助信息基本上是 man 命令的信息简要版。 对于这 4 种常见的获取帮助的方法,大家可以按照自己的习惯任意使用。

这三个时间的区别我们在 stat 命令中已经解释过了,这里用 mtime 数据修改时间来举例,重点说 说“[+-]”时间的含义。

  • -5:代表 5 天内修改的文件。
  • 5:代表前 5~6 天那一天修改的文件。
  • +5:代表 6 天前修改的文件。