LInux 文件搜索命令
文件搜索命令 locate
优点:搜索速度很快 缺点: 只能搜索文件名(速度快 耗费资源少)
localte 文件名
(在后台数据库中按文件名 搜索,搜索速度快 localte 命令并不是在系统中去搜索 )
而是会在 /var/lib/mlocate 后台数据库 (#locate 命令所搜索的后台数据库 该数据库是一天一更新)
updatedb 可以立刻更新数据库
locate 搜索时: 按照配置文件来进行搜索 /etc/updatedb.conf 配置文件
# 开启搜索限制 prune_bind_mounts = "yes"
# 搜索时不搜索的文件系统 prunenames =
#搜索时不搜索的路径: prunepaths
命令搜索命令 whereis 与which
whereis # 搜索命令所在路径及帮助文档所在位置 (whatis whoami)
选项 -b : 只查看可执行文件 -m 只查看帮助文档所在位置
外来命令可以通过 whereis 和which找到
which 会把别名完整名打印出来 可以看一下他的使用
(/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)
这个是什么? 在linux中要想要执行脚本,执行文件或者执行命令,只有一种方法那就是使用绝对路径,
有了一个$path 的环境变量 该路径 使用 : 分割的不同路径
PATH环境变量: 定义的是系统搜索命令的路径
文件搜索命令 find
locate 命令只能搜文件名 whereis和which命令只能搜命令所在路径
find命令
find [搜索范围] [搜索条件]
#搜索文件
find / -name install.log
#避免大范围的搜索,会非常耗费系统资源
#find 是在系统当中搜索符合条件的文件名。使用通配符匹配,通配符是完全匹配
find 是完全匹配
在linux 中的通配符 : * 匹配任意内容 ? 匹配任意一个字符 [] 匹配中括号内的字符
find /root -name "install.log*"
find /root -name "ab[cd]"
find /root -name "*[ab]" find 文件名 无通配符完全匹配,想要模糊查询,必须加通配符
find /root -iname install.log 不区分大小写
find /root -user root #按照所有者来进行搜索
find /root -nouser #查找没有所有者的文件
find /root -nouser 很常用 一旦搜索到,没有所有者的文件是垃圾文件 (内核产生的文件有可能没有所有者,proc,sys 是正常的 外来文件 可能没有所有者 )
find /var/log -mtime +10
#查找10天前修改的文件
-10 10天内修改的文件
10 10天当天修改的文件
+10 10天前修改的文件
atime 文件访问时间
ctime 改变文件属性
mtime 改变文件内容
按照文件大小搜索 :
find [文件路径] -size 25k
find [文件路径] -size 25M 小写的 k 大写的M
按照 inode 来搜索文件
find [文件路径] -inum 262422 # 查找i节点是262422 的文件
find 的复杂操作
find /etc -size +20k -a -size -50k
# 查找 /etc 目录下,大于20KB并且小于50KB的文件
-a and 逻辑与 两个条件都满足
-o or 逻辑或 两个条件满足一个就可以
find /etc/ -size +20k -a -size -50k -exec ls -lh {} \;
{} 放置的是查找结果
# 查找/etc 目录下,大于20KB并且小于50kb的文件,并显示详细信息
#-exec / -ok 命令{} \; 对搜素结果执行操作
find /root -inum 790222 -exec rm -rf {} \;
找到 790222 节点 并删除节点 并发查找
字符串搜索命令 grep
grep [选项] 字符串 文件名
# 在文件当中 匹配符合条件的字符串
选项 :
-i 忽略大小写
-v 排除指定字符串
find命令和grep命令的区别
find 命令: 在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配
grep命名: 在文件当中搜索符合条件的字符串,如果需要匹配,使用正则表达式进行匹配,正则表达式时包含匹配