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
统计输出信息的行数,因为已经过滤得只剩一般文件了,所以统计结果就是一般文件信息的行数,又由于一行信息对应一个文件,所以也就是文件的个数。