内容概要
locate
locate
命令优点是搜索速度更快,耗费系统资源更少,缺点是只能按文件名搜索
locate
命令所搜索的后台数据库:/var/lib/mlocate
示例:
/etc/updatedb.conf配置文件
为什么locate
命令不会搜索/tmp
目录,正是因为有这个配置文件。
对于locate
、whereis
和which
命令,其查找都会遵循updatedb.conf
文件的配置规则,该文件配置项说明如下。
whereis
搜索命令所在路径及帮助文档所在位置,只能搜索命令
注意:某些命令比如 cd
命令是找不到可执行文件的,因为是shell自带的命令
语法:whereis [选项] 命令名
选项:-b:
只查找可执行文件; -m:
只查找帮助文件
which
搜索命令所在路径及别名定义(有则显示)
语法:which 命令名
find
用于在指定目录下搜索符合条件的文件,如果需要模糊查询,使用通配符匹配,通配符是完全匹配。
find
命令非常强大,也相对比较耗费系统资源,所以应该尽量避免大范围的搜索,比如直接搜索根目录:find / ...
语法:find 路径 [选项] [搜索内容]
linux中的通配符
示例:使用通配符必须使用双引号包裹搜索内容
常用选项
其他选项
命令示例
# 查找root目录下名称为install.log的文件
find /root -name install.log
# 同上,不区分大小写
find /root -iname install.log
# 查找root目录下所有者为root的文件
find /root -user root
# 查找没有所有者的文件
find /root -nouser
# 查找空文件
find /root -empty
# 查找10天前修改的文件
find /var/log/ -mtime +10
# 查找文件大小是25KB的文件(查询mb请使用M),点代表当前目录
find . -size 25k
# 查找i节点是262422的文件
find . -inum 262422
# 查找大于20KB并且小于50KB的文件
find /etc -size +20k -a -size -50k
# 查找大于20KB并且小于50KB的文件,并显示详细信息
find /etc -size +20k -a -size -50k -exec ls -lh {} \;
# 查找大于20KB并且小于50KB的文件,并删除这些文件
find /etc/ -size +20k -a -size -25k -exec rm -rf {} \;
补充说明
find /root -nouser
可以查找没有所有者的文件,一般是垃圾文件,可以删除。以下两种情况例外
- 内核文件:如果这个文件是由内核产生的,内核是直接调用不经过系统用户。内存目录proc和sys产生的文件也可能没有所有者。
- 外来文件:比如数据是在Windows下建立,拷到U盘,然后插入Linux中,这个文件就可能不会有所有者。
grep
在指定文件当中匹配符合条件的字符串
语法:grep [选项] 字符串 文件名
选项:-i:
忽略大小写; -v:
排除指定字符串; -n:
显示匹配的行号
find与grep区别
find命令:在系统当中搜索符合条件的文件名,如果需要匹配使用通配符匹配,通配符是完全匹配
grep命令:在文件当中搜索符合条件的字符串,如果需要匹配使用正则表达式进行匹配,正则表达式是包含匹配
与管道符结合使用
grep
命令除了搜索文件内容以外,通常还会与管道符 |
结合使用来过滤一些命令的输出结果。
例如当我们启动了一个软件或者服务,假设是nginx,我们只想查询nginx相关的进程,使用命令 ps -ef | grep nginx
即可。