您的位置:首页 > 运维架构 > Linux

Linux 搜索命令(locate/find/whereis/which/grep)

2017-06-07 21:19 676 查看

locate 文件名搜索

原理:从后台数据库中进行文件名搜索,不会遍寻整个系统。所以速度较快。缺点也是只搜索文件名。

安装

yum install mlocate


locate命令的后台数据库

/var/lib/mlocate


在不同版本中可能是不同的名字,比如slocate

数据库更新的配置文件

/etc/updatedb.conf


(可以配置搜索限制条件以及是否开启限制,默认开启)

命令

locate 文件名  //查找文件位置
updatedb //更新数据库(数据库默认一天更新一次)


更新DB(updatedb)需要用root权限,

另外默认不搜索的目录等设置参考/etc/updatedb.conf



默认etc配置文件规定不搜索tmp、cache、media等目录 以及各种文件系统,包括iso9660 cifs ··

whereis 和which

whereis

搜索”命令”的命令。搜索系统命令所在路径及帮助文档所在位置

只能搜索系统命令,不能搜索自己创建的命令

命令

whereis 命令名
选项:-b 只查找可执行文件
-m 只查找帮助文件


which

搜索”命令”的命令。搜索系统命令位置和别名

命令

which  命令名
//输出该命令的位置以及别名


shell内置的命令是无法找到执行文件的(shell自带),外来命令才可以找到。

环境变量$PATH

执行命令是去PATH中的路径中去寻找相应的命令(以绝对路径的形式来进行执行),都找不到时则返回命令没有发现。

find

功能众多导致选项多。

命令

find [搜索范围] [搜索条件]

例:find / -name "abc"
//避免使用大范围的搜索,占用系统资源,文件名可以使用通配符进行完全匹配。注意加双引号。


主要通配符

* 任意内容(可以为多个字符)

? 任意字符 (只能是一个字符)

[ ] 挂号中的任意一个字符(只能是一个字符)

find /root -name "xxx" 搜索文件名

find /root -iname "xxx" 搜索文件名不区分大小写

find /root -user root 查找所有者为root

find /root -nouser 搜索没有所有者文件(垃圾文件,内核文件,外来文件)## 标题 ##

find /var/log -mtime +10
按照天数搜索
+10十天前 ,
10第十天,
-10十天内
// mtime  修改文件内容的时间 modify (修改)
// ctime  改变文件属性的时间 change
// atime  文件访问的时间 access
find . -size -25k 按照文件大小搜索,小于25kB的文件(小写k)

find /root -size +2M
大于2M的文件(大写M)

find . -inum 262422 i节点查找
操作-exec ls -lh {} \;

find /root -size +20 -a -size -50k
//同时满足两个要求,-a 起 与的作用(and/&&)   -o  或的作用(or/||)
######################
find /root -size +20 -and -size -50k -exec ls -lh {} \;
//在执行完第一个命令后,继续执行第二个命令(可以在运行完第一个后可以执行的命令),后面的符号为固定格式。


grep

在某个文件中搜索指定的内容,使用包含匹配,使用正则表达式。

命令

grep [选项] 字符串 文件
i-忽略大小写
v-排除指定字符串


*搜索文件名 使用通配符

搜索文件中的内容则是使用正则表达式。*

Linux下查看某个目录下的文件、或文件夹个数

用到3个命令:

ls列目录、用grep过虑、再用wc统计。

举例说明:

1、查看统计当前目录下文件的个数

  ls -l | grep “^-” | wc -l

2、查看统计当前目录下文件的个数,包括子目录里的。

  ls -lR| grep “^-” | wc -l

3、查看某目录下文件夹(目录)的个数,包括子目录里的。

  ls -lR| grep “^d” | wc -l

命令解释:

ls -l

长列表输出该目录下文件信息(注意这里的文件,不同于一般的文件,可能是目录、链接、设备文件等),每一行对应一个文件或目录,如果要列出所有子目录下的文件就是ls -lR。

grep “^-”

这里将长列表输出信息过滤一部分,只保留一般文件,如果只保留目录就是grep “^d”。

wc -l

统计输出信息的行数,因为已经过滤得只剩一般文件了,所以统计结果就是一般文件信息的行数,又由于一行信息对应一个文件,所以也就是文件的个数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux 搜索