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

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

安装 
yum install mlocate

locate命令的后台数据库 
/var/lib/mlocate 
在不同版本中可能是不同的名字,比如slocate

数据库更新的配置文件 
/etc/updatedb.conf 
(可以配置搜索限制条件以及是否开启限制,默认开启) 
命令

locate 文件名  //查找文件位置
updatedb //更新数据库(数据库默认一天更新一次)
1
2
更新DB(updatedb)需要用root权限, 
另外默认不搜索的目录等设置参考/etc/updatedb.conf 
, 
默认etc配置文件规定不搜索tmp、cache、media等目录 以及各种文件系统,包括iso9660 cifs ··

whereis 和which
whereis
搜索”命令”的命令。搜索系统命令所在路径及帮助文档所在位置 
只能搜索系统命令,不能搜索自己创建的命令

命令

whereis 命令名 
  选项:-b 只查找可执行文件
       -m 只查找帮助文件
1
2
3
which
搜索”命令”的命令。搜索系统命令位置和别名

命令

which  命令名
//输出该命令的位置以及别名
1
2
shell内置的命令是无法找到执行文件的(shell自带),外来命令才可以找到。

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

find
功能众多导致选项多。

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

例:find / -name "abc"
    //避免使用大范围的搜索,占用系统资源,文件名可以使用通配符进行完全匹配。注意加双引号。
1
2
3
4
主要通配符
* 任意内容(可以为多个字符)
? 任意字符 (只能是一个字符)
[ ] 挂号中的任意一个字符(只能是一个字符)
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 {} \;
//在执行完第一个命令后,继续执行第二个命令(可以在运行完第一个后可以执行的命令),后面的符号为固定格式。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
grep
在某个文件中搜索指定的内容,使用包含匹配,使用正则表达式。

命令
grep [选项] 字符串 文件
i-忽略大小写
v-排除指定字符串
1
2
3
*搜索文件名 使用通配符 
搜索文件中的内容则是使用正则表达式。*

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 
统计输出信息的行数,因为已经过滤得只剩一般文件了,所以统计结果就是一般文件信息的行数,又由于一行信息对应一个文件,所以也就是文件的个数。
--------------------- 
作者:conling_ 
来源:CSDN 
原文:https://blog.csdn.net/conling_/article/details/72904061?utm_source=copy 
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/weixin_41182157/article/details/83043106