004-linux命令-搜索命令find、locate、whereis、which、type

时间:2022-06-06 06:57:57

一、概述

  使用linux系统难免会忘记文件所在的位置,可以使用以下命令对系统中的文件进行搜索。

1.1、find

  语法:find <指定目录> <指定条件> <指定动作>即:find [范围] [条件] [文件名]

  find [-H | -L | -P] [-EXdsx] [-f path] path ... [expression]

1、find命令搜索在根目录下的所有nginx文件所在位置

find / -name  'nginx'

  / 是搜索范围,根目录 。 缩小范围/root/ 表root目录下 等

  -name 是根据名称

  查不到,因为不是模糊查询。文件名要具体指定

2、如果想要模糊查询,则加通配符

通配符: *

find / -name  'nginx*'

匹配所有 nginx开头的

3、通配符 ?

一个? 表示 查找算法后 有一个字符的

find / -name  'nginx?'

只能匹配 nginx1,nginx2,不能多个字符,nginx34

两个? 表示 查找算法后 有两个字符的

4、通配符* 和 ? 可以加在关键字 算法的任意位置

5、通配符 [ ]

表示有 [ ] 内的任意一个字符 都能查找出来

find / -name  'ngi[ng]x'

匹配nginx、ngigx

6、linux是区分大小写的,如果文件名是小写,如果搜索是写成大写的就查找不到了

如果不区分大小写只需在name前加个 i

find / -iname  'nginx'

不区分大小写

7、根据用户-user

  根据文件名-name查找

  查找root 用户目录下 所有文件

find / -user root

8、-size  根据文件大小查找

命令 [root@localhost ~]# find /root/ -size 2k

2k 表示1~2k

1k 表示 0~1k

+2k 表示大于2k

-2k表示小于2k

命令 [root@localhost ~]# find /root/ -size +10k –a –size -20k

表示查找root目录下 大于10k并且小于20k 的文件

-a 表示 and与

-o 表示 or或

9、-inum  根据i节点查找

[root@localhost ~]# ll -i   显示所有i节点的文件

ll -i
-rw-r--r-- root root 2月 : test.txt

查找

find /export/servers/ -inum
# /export/servers/test.txt

10、根据时间查找

-atime  +n 表示访问或执行时间大于n天的文件

-ctime  +n 表示写入更改时间大于n 天的文件

-mtime  +n  表示写入时间大于n天的文件,用的最多

-n 就表示 小于n 天

1.2、locate

  比find命令快。因为它查询的是数据库(/var/lib/locatedb),数据库包含本地所有的文件信息。搜索速度快,但不适合精确查找。一般不用。

  如上例:

locate nginx

1.3、whereis

  使用”whereis“命令可以搜索linux系统中的所有可执行文件即二进制文件

  如搜搜grep命令

whereis grep

1.4、which

  使用which命令查看系统命令是否存在,并返回系统命令所在的位置

  使用which命令查看grep命令是否存在以及存在的目录的命令为:

which grep

1.5、type

  使用type命令查看系统中的某个命令是否为系统自带的命令

  使用type命令查看cd命令是否为系统自带的命令;查看grep 是否为系统自带的命令。

type cd
type grep

1.6、grep查文件内部

Grep [要查找的字符串] [路径]

查找 目录中配置文件中的 字符串

grep test /export/servers
grep: /export/servers: 是一个目录

grep test /export/servers/test.txt
test is test s

选项

-i 忽略大小写

-v 排除指定字符串