Linux查找命令which、whereis、locate、find、grep
前言:
我们在使用linux时,经常需要进行文件查找,以及找到文件后,对文件内容进行查找,以保证我们高效率的工作。
本文详细对文件查找命令which
、whereis
、locate
、find
文档内容查找命令 grep
进行详解
文件查找命令
文件查找命令可分为which
、whereis
、locate
、find
!!!∑(゚Д゚ノ) ノ | which | whereis | locat | find |
---|---|---|---|---|
文件支持 | 可执行文件 | 二进制文件、帮助文件、源文档 | 所有文件类型 | 所有文件类型 |
查找方式 | 环境变量PATH | 数据库索引 | 数据库索引 | 可指定路径,默认查当前路径和所有路径 |
查找原理 | 查找所有PATH所指定的目录,寻找完全匹配filename的可执行文件 | 数据库索引,对去除. 之后的所有字符filename进行完全匹配 | 数据库索引,绝对路径,部分匹配 | 寻遍磁盘 |
查找速度 | 高 | 高 | 高 | 低 |
适用场景 | 可执行文件的查找 | 二进制文件、帮助文件、源文档 | 模糊查找 | 能使用前三种尽量不要使用这个,速度慢 |
Ps:文件查找方式是使用数据库索引的,需要在查之前使用updatedb
更新索引,或者重启系统,否则有些新创建的文件查不到哦 !!!∑(゚Д゚ノ) ノ
1 . which
的详细使用
-n
<文件名长度> 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。
-p
<文件名长度> 与-n参数相同,但此处的<文件名长度>包括了文件的路径。
-w
指定输出时栏位的宽度。
-V
(大写)显示版本信息。
[root@localhost var]# which useradd
/usr/sbin/useradd
[root@localhost var]# which touch
/usr/bin/touch
2 .whereis
的详细使用
-b
只查找二进制文件。
-B
<目录> 只在设置的目录下查找二进制文件。
-f
不显示文件名前的路径名称。
-m
只查找说明文件。
-M
<目录> 只在设置的目录下查找说明文件。
-s
只查找原始代码文件。
-S
<目录> 只在设置的目录下查找原始代码文件。
-u
查找不包含指定类型的文件。
flle:[root@localhost var]# whereis -b passwd
passwd: /usr/bin/passwd /etc/passwd
[root@localhost var]# whereis -b file1.txt
file1:[root@localhost var]# 查不到
3. locate
的详细使用
-i
, --ignore-case – 忽略大小写
-c
, --count – 只输出找到的数量
-b
, --basename – 仅匹配路径名的基本名称
-d
, --database DBPATH – 使用 DBPATH 指定的数据库,而不是默认数据库 /var/lib/mlocate/mlocate.db
-e
, --existing – 仅打印当前现有文件的条目
[root@localhost /]# locate -i file1.txt
/var/File1.txt
/var/file1.txt
4. find
的详细使用
-name
文件名字
-atime
最近读取时间
-mtime
最近修改内容时间
-ctime
最近权限状态改动时间
amin
: 最近打多少分钟被读取过
-anewer file
: 比文件 file 更晚被读取过的文件
-perm
:按照 文件权限查找
-siz
-大小 +5M就代表>5M 反之
-empty
为空的文件类型
-type
文件类型 f
代表文件 d
代表文件夹b
代表设备文件 p
管道 l代表链接 e
大小
-user
按照属主
-group
按照属组
# find /etc -iname "fun*" -ok -delete #不区分大小写找到etc下名字是fun开头的文件删除
文件内容查找命令
grep
的详细使用
Linux grep 命令用于查找文件里符合条件的字符串。
grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 -
,则 grep 指令会从标准输入设备读取数据。
常用参数:
-c
:只输出匹配行的计数。
-i
:不区分大小写。
-h
:查询多文件时不显示文件名。
-l
:查询多文件时只输出包含匹配字符的文件名。
-n
:显示匹配行及 行号。
-s
:不显示不存在或无匹配文本的错误信息。
-v
:显示不包含匹配文本的所有行。
--color=auto
:可以将找到的关键词部分加上颜色的显示。
pattern正则表达式主要参数:
\
: 忽略正则表达式中特殊字符的原有含义。
^
:匹配正则表达式的开始行。
$
: 匹配正则表达式的结束行。
\<
:从匹配正则表达 式的行开始。
\>
:到匹配正则表达式的行结束。
[ ]
:单个字符,如[A]即A符合要求 。
[ - ]
:范围,如[A-Z],即A、B、C一直到Z都符合要求 。
.
:所有的单个字符。
*
:所有字符,长度可以为0。
##显示passwd文件里包含关键字root的行
[root@localhost ~]# grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
##显示passwd文件里包含关键字root的行数
[root@localhost ~]# grep -c root /etc/passwd
2
##不区分大小写显示passwd文件里包含关键字root或“ROOT”的行
[root@localhost ~]# grep -i root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
##显示包含root关键的行及行号
[root@localhost ~]# grep -n root /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin
##不显示包含root关键字的行,并加入行号
[root@localhost ~]# grep -v -n root /etc/passwd
2:bin:x:1:1:bin:/bin:/sbin/nologin
3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
4:adm:x:3:4:adm:/var/adm:/sbin/nologin
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6:sync:x:5:0:sync:/sbin:/bin/sync
##匹配包含关键词roo的行,并加行号
[root@localhost ~]# grep roo* -n /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin
17:tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
21:chrony:x:998:996::/var/lib/chrony:/sbin/nologin
## 包含r开头h结尾内容的行,并加行号
[root@localhost ~]# grep -n 'r.*h' /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
17:tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
19:sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
21:chrony:x:998:996::/var/lib/chrony:/sbin/nologin