1.文件搜索命令(locate,find,whereis,which,grep)
1>文件搜索命令locate
用法locate 【文件名】 ---->在后台数据库中按文件名搜索,搜索速度快
输入locate yum.log会搜索到所有和yum.log相关的文件。
当我们新建一个文件touch locate_test_txt
再次输入locate locate_test_txt 进行查询时我们查不到文件,这因为locate 是从后台数据库中查找,而后台数据库没填更新一次所以没有查到
/var/lib/mlocate #locate命令所搜索的后台数据库
当我们输入updatedb更新数据库后 ,进行locate查询,,可以搜索到文件。
当我们在root的家目录创建了一个
locate_test_txt ,又在 /tmp 下也建立了一个locate_test_txt 之后更新数据库,我们使用locate 命令查询locate_test_txt ,只能搜索到root加目录下的locate_test_txt 。
这是因为locate搜索是按照/etc/updatedb.conf 配置文件来搜索的
打开/etc/updatedb.conf
我们发现里面有四句话,第一句prune_bind_mounts后面的yes表示配置文件筛选规则全部有效,如果是no表示配置文件全部无效
第二句是不搜索的文件系统
第三句是不搜索文件名中不包含.git .hg .svn
第四句是在这些目录下的文件不搜索
因为我们刚才建的文件在/tmp下所以不进行搜索。
2---->搜索命令whereis 和which
whereis和which是命令搜索命令,是对命令进行搜索
格式: whereis 命令名称
搜索命令所在位置以及帮助文档所在位置 选项有 -b 只查询可执行文档 -m
只查询帮助文档
例如我们常用的ls命令
我们输入whereis ls
会出现/bin/ls 这个是命令所在的位置,后面两个是帮助文档所在的位置
不能查询文件
格式:which 命令名
which ls
which 会搜索到命令所在的路径以及命令的别名。
whereis ,which 只能搜索到外部安装的命令,搜索不到shell下的命令(cd等等)。
PATH环境变量:
PATH 定义的是系统搜索命令的路径
当我们输入的命令不在PATH环境下则找不到命令
如果我们自己定义的命令不在PATH环境下,我们需要输入路径才能执行命令
find命令
find 【搜索范围】 【搜索条件】 #搜索文件
find / -name install.log
1.查询会比较慢,因为我们搜索的范围是全局范围,会非常消耗系统资源。
2.find命令是精确查找,在我门的目录下还有install.log.syslog 并没有查到。如果要搜索符合条件的文件名,需要用通配符,通配符是完全匹配。
3.通配符包括: *任何字符,?任意一个字符,【】任意一个括号中的字符
当我们使用通配符时,用双引号。
搜索用户:
find /root -user root 搜索所有者文件
find /root -nouser 查找没有所有者的的文件,linux没有用户的文件可能是垃圾文件,也可能是系统内核文件(sys产生的文件)
按时间搜索:
find /var/log -mtime +10 查找10天前的日志文件
-10 10天内修改的文件
10 10天当天修改的文件
+10 10天前修改的文件
atime 文件访问时间
ctime 修改文件属性时间
mtime 修改文件内容时间
按文件大小:注意单位 k小写M大写G大写
find -size +30k
查找大于30k的文件
+30 k 大于30 k 文件
30 k 等于30 k的文件
-30k 小于30k的文件
按节点查找:
find -inum 26334
查找节点为26334的文件
find /etc -size +20k -a size -50k
查找/etc目录下 大于20k小于50k的文件
-a 是与 -o是或
find /etc -size + 20k -a -size -50 k -exec ls -lh {} \;
查找/etc/目录下,,大于20k小于50k的文件,并显示详细信息
-exec/-ok 命令{} \; 表示对搜寻结果执行操作
字符串搜索:grep
grep 【选项】 字符串 文件名 在文件当中搜寻指定字符串
-i 忽略大小写
-v 排除指定字符串
grep “size ” anaconda-ks.cfg 搜索出anaconda-ks.cfg 中有关size的所有字段
grep -v ”size“ anaconda-ks.cfg
//搜索出除了size之外的字段
grep和find 的区别:
find : 在文件中搜索符合条件的文件名,如果需要匹配,使用通配符匹配,是完全匹配
grep:在文件当中所搜索指定的字符串,如果需要匹配,使用正则表达式匹配,是包含匹配