find与grep
find命令用于查找某个文件或者文件夹;而grep用于查找指定字符串内容
1、find命令
find命令用于查找某个文件或者文件夹,比如:
$find . -name "*.java" //查找当前目录下所有扩展名为java的文件。
2、grep命令
grep命令用于查找指定字符串,比如:
$grep -n "hello" hello.c //在hello.c中查找hello字符串,如匹配到则显示包含该字符串的行及行号
3、find与grep命令组合使用
find与grep命令组合使用,在大量文件中查找非常方便,如:
find . -name "*.c" | xargs grep "hello" //在当前目录所有.c文件查找包含hello字符串的文件
mlocate
比find快得多,搜索任何文件几乎都能在一秒内返回,时间复杂度O(1)。
这个命令的原理是,先为文件系统创建索引数据库,mlocate只是搜索索引,所以速度快
准备工作:创建数据库(创建索引)
sudo updatedb 只有root权限才能执行,他会扫描整个系统,为整个系统创建索引,数据库在/var/lib/mlocate/mlocate.db
这个过程会比较慢,可以在中午或晚上跑一下,执行完了上面的命令就可以使用mlocate搜索文件了
使用命令
mlocate abc.txt
mlocate -ie abc.txt 如果 abc.txt已经删除了,使用-e会检查文件是否真实存在,而不必updatedb;-i,忽略大小写
mlocate /etc/*profile 在/etc中查找类似profile的文件
注意:对于新增文件应该先updatedb更新数据库,否则就搜不到,当然更新索引时,执行updatedb还是比较快的