Linux常用命令-搜索
此为imooc课程上的文件搜索命令,也是在整个命令中极为重要的一个环节。
- 文件搜索命令locate
- 命令搜索命令whereis 与 which
- 文件搜索命令find
- 字符串搜索命令grep
- find命令与grep命令的区别
文件搜索命令locate
locate的搜索特点就是在后台数据库中按照文件名进行搜索,搜索速度很快
注:
- /var/lib/mlocate
其为locate命令所搜索的后台数据库,该数据库是每天进行一次更新的,因此刚刚写入的数据是无法被搜索出来的,如果我们需要将刚刚写入的数据被搜索出来,那么我们就要对该数据库进行强制更新。
~ updatedb
下面来看一看数据库的配置文件–/etc/updatedb.conf
其中第一行表示的是是否开启如下的搜索限制,第二行表示的是搜索时不搜索的文件系统,第三行表示的是搜索时不搜索的文件类型,最后一行表示的是搜索时不搜索的文件路径。
命令搜索命令whereis和which
whereis + 命令名
搜索命令所在的路径及帮助文档所在的位置,在中间加上“+b”时只查找可执行文件,在中间加上“-m”时只查找帮助文件。
其查找的命令不能够是系统自带的shell中的命令,例如cd命令由于是shell中自带的,因此无法通过whereis命令来查找到。
which 文件名
搜索命令所在路径及别名
which与whereis的最大区别是which可以可以显示某一命令的别名。
我们看普通文件是黑的,看目录文件是蓝的,看执行文件是绿的。
PAHT环境变量
PATH环境变量:定义的是系统搜索命令的路径
注:由于linux是严格区分大小写的,因此path环境变量在linux系统中没有被定义,而PATH环境变量则是定义的系统搜索命令的路径,它的确定则可以简化我们搜索命令的输出,就像windows中cmd命令可以无需打出完整的路径
我们可以使用
# echo $PATH
来查看系统当前的环境变量
find搜索命令
文件搜索命令find的功能相当强大,但是在一个大的系统中需要进行参数的限制,不然消耗的资源太大。
find [搜索范围] [搜索条件]
注: 在使用find命令搜索时,需要避免大范围的搜索,这样会消耗系统资源,另外find是在系统中搜索符合条件的文件名,如果需要匹配,使用通配符进行匹配,通配符是完全匹配。
find / -name install.log
如果我们不想要进行完全查询,而是要进行模糊查询,那么就要使用linux中的通配符,linux中的通配符有以下几种:
- ”*“ 匹配任意内容
- ? 匹配任意一个字符
- 【】 匹配任意一个中括号内的字符
find /root -iname install.log
//不区分大小写
find /root -user root
//按照所有者搜索
find /root -nouser
//查找没有所有者的文件(一般而言出了外部文件和内存中存放的文件没有所有者之外,其他没有所有者的文件都是病毒)
find /var/log/ -mtime +10
//查找10天前修改的文件
注:
-10 10天内修改的文件
10 10天当天修改的文件
+10 10天前修改的文件
atime 文件访问时间
ctime 改变文件属性
mtime 修改文件内容
find . size 25k
//查找文件大小为25kb的文件,“.”表示当前目录
-25k 小于25KB的文件
25k 等于25KB的文件
+25K 大于25KB的文件
注意M和k(一个大写一个小写)
find -inum 262422
//查找i节点是262422的文件
以下是更为复杂的find命令的使用:
find /etc -size +20k -a(-o) -size -50k
//复合条件的命令查找
find /etc -size +20k -a -size -50k -exec ls -lh {} \;
查找/etc/目录下,大于20kb并且小于50kb的文件,并且显示详细信息
//-exec/-ok 命令 {} \; 对搜索结果进行的操作
grep命令
grep命令与find命令很相似,但是主要存在如下的差异:
grep [选项] 字符串 文件名
//在文件当中匹配符合条件的字符串
grep "size" annaconda-ks.cfg
find命令和grep命令的区别
- find命令:在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配
- grep命令:在文件中搜索符合条件的字符串,如果需要匹配,使用正则表达式进行匹配,正则表达式时包含匹配