Linux学习(二)文件搜索命令
1.locate命令
格式:locate 文件名
在后台数据库中按照文件名搜索,搜索速度更快。后台数据库默认路径是==/var/lib/mlocate==(根据Linux版本不一致,路径可能不一样,可以用locate locate命令查找)。
但是数据库默认是一天更新一次,所以新建的文件用locate命令会找不到,此时可以执行updatedb命令,更新数据库,就可以找到了。
但有时候即使进行了updatedb,是因为在/etc/updatedb.conf配置文件里,默认不搜索某个目录下面的文件。
/etc/updatedb.conf配置文件:
- PRUNE_BIND_MOUNTS =“yes” -->开启搜索限制
- PRUNEFS -->搜索时,不搜索的文件系统
- PRUNENAMES -->搜索时,不搜索的文件类型
- PRUNEPATHS -->搜索时,不搜索的路径
2.命令搜索命令whereis和which
格式:whereis [选项] 命令名
搜索命令所在路径以及帮助文档所在位置。
选项: -b 只查找命令所在路径
-m 只查找帮助文档
注意:cd 命令是找不到的,因为它是shell自带的命令
which 命令名:
搜索命令所在路径以及别名。
3.PATH环境变量
定义的是系统搜索命令的路径,类似Windows环境变量,通过PATH路径,可以不打绝对路径执行命令。
4.find命令
find [搜索范围] [搜索条件]
find / -name install.log 在根目录下按照名字搜索install.log
要避免大范围搜索,会非常耗费系统资源。find是在特定目录下搜索符合条件的文件名,搜索出的文件名要跟搜索的文件名完全一致。
如果需要匹配,使用通配符进行匹配,通配符是完全匹配。
Linux中的通配符:
- * 匹配任意内容
- ? 匹配任意一个字符
- [] 匹配任意一个中括号内的字符
find的其他命令:
find /root -iname install.log 不区分大小写查找
find /root -user root 按照所有者搜索
find /root -nouser 查找没有所有者的文件,一般用来手动清除垃圾文件
但是有两种情况有可能没有所有者,要谨慎删除:
1.由内核产生的文件,有可能没有所有者,比如在proc或者sys目录下面的。
2.外来文件也有可能没有所有者,例如U盘拷贝进来的文件。
按照修改时间查找:
find /var/log -mtime +10 查找10天前修改的文件
-10 十天内修改的文件
10 十天当天修改的文件
+10 十天前修改的文件
选项:atime 文件访问时间
ctime 改变文件属性的时间
mtime 修改文件内容的时间
按照字节大小查找:
find . -size 25k
k字节小写,M字节大写(25M)
-25k 小于25k的文件
25k 等于25k的文件
+25k 大于25k的文件
根据i节点查找文件:
find . -inum 265845
逻辑与和逻辑或:
find /etc -size +20k -a -size -50k
查找/etc目录下,大于20KB并且小于50KB的文件
-a and 逻辑与,两个条件都满足
-0 or 逻辑或,两个条件满足一个即可
对搜索结果进行操作:
find /etc -size +20k -a -size -50k -exec ls -lh {} ;
查找/etc目录下,大于20KB并且小于50KB的文件,并显示出详细信息
-exec/-ok 命令 {} ;对搜索结果进行操作
5.grep命令
grep [选项] 字符串 文件名
在文件中匹配符合条件的字符串
选项:-i 忽略大小写
-v 排除指定字符串
find和grep的区别:
find命令:在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配。
grep命令:在文件当中搜索符合条件的字符串,如果需要匹配,使用正则表达式进行匹配,正则表达式是包含匹配。