Linux查找命令
本文介绍Linux中的查找功能
1. locate 查找文件
命名格式:locate 文件名
查找原理:locate命令在后台数据库(/var/lib/mlocate)查找文件名,搜索速度快,因此如果只是想查找文件名,推荐使用locate命令
数据库林默认一天更新一次,因此,如果要查找新建的文件,需要手动更新数据库
sudo updatedb
locate查找过滤规则(文件系统,文件类型,文件路径)可以在文件/etc/updatedb.conf中配置

PRUNE_BIND_MOUNT #是否使用限制规则
PRUNEFS #不查找的文件系统
PRUNEPATHS #不查找的路径
2. 命令查找使用whereis和which
Linux命令一般包含二进制的可执行文件和帮助文件,可以使用whereis查找命令所在路径及其帮助文档的位置

例如:使用whereis ls 可以看到ls命令的可执行文件为:/bin/ls 帮助文档为:/usr/share/man/man1/ls.1.gz和ls.1posix.gz
注意:whereis 只能使用查找命令,不能用于查找文件
which与wehreis类似,可以查找命令及其别名,但不能显示帮助文档
3. find命令查找文件
命令格式:find [查找路径范围] [查找条件]
find命令会在查找路径下遍历,比较耗资源,查找时间慢,但功能强大,可以加很多参数来限定查找条件
find / -name 文件名
find / -iname 文件名 #不区分大小写
find / -user root #按user查找
find / -size +1M #查找大于1MB的文件
find / -size -10k #查找小于10kB的文件
find / -mtime +5
-5 5天内修改的文件
5 第5天当天修改的文件
+5 5天前修改的文件
atime 文件访问问题
ctime 文件属性改变时间
mtime 文件内容修改时间
多条件查找可以使用参数-a (and) -o (or)
find / -size +10k -a -size -1M #查找根目录下大于10k小于1M的文件
3. 使用grep查找文件中的字符串
命令格式:grep [选项] 字符串 文件名
常用参数:
-i 忽略大小写
-n 显示行号
-r 递归查找
-v 查找不包含关键字的行
grep非常适合在代码中查找包含关键字的文件,也可以与find命令结果
find . -name “*.[ch]” | xargs grep “hello world” #查找包含关键字 hello world 的.c和.h文件
grep -rin "hello world" . #递归查找当前目录下包含"hello world"的文件 ,不区分大小写,并显示“hello world”所在行号