关于查找which、whereis、locate、find、grep

Linux查找命令which、whereis、locate、find、grep

前言:

我们在使用linux时,经常需要进行文件查找,以及找到文件后,对文件内容进行查找,以保证我们高效率的工作。
本文详细对文件查找命令whichwhereislocatefind
文档内容查找命令 grep 进行详解

文件查找命令

文件查找命令可分为whichwhereislocatefind

!!!∑(゚Д゚ノ) ノ 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开头的文件删除

关于查找which、whereis、locate、find、grep_第1张图片

文件内容查找命令

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




你可能感兴趣的:(Linux,linux,centos,运维)