004-linux命令-搜索命令find、locate、whereis、which、type、grep
一、概述
使用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 1579964 -rw-r--r-- 1 root root 0 2月 11 09:18 test.txt
查找
find /export/servers/ -inum 1579964 # /export/servers/test.txt
10、根据时间查找
-atime +n 表示访问或执行时间大于n天的文件
-ctime +n 表示写入更改时间大于n 天的文件
-mtime +n 表示写入时间大于n天的文件,用的最多
-n 就表示 小于n 天
其他
find . | xargs grep -ri "aaa" 【搜索内容必须固定,不能模糊匹配】
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 排除指定字符串