用linux的你有没有过这种崩溃时刻:写了大半天的自动化脚本存在服务器,转天想用只记得文件名里带了backup,翻遍了~/project、/opt这些常用文件夹都找不到,总不能一个目录一个目录ls碰运气吧?别慌,掌握这几种关键词检索方法,不管是找文件名还是搜文件内容,输入关键词就能快速定位,帮你省下半小时翻目录的时间。
全能选手find:全目录精准检索
find是linux自带的默认检索工具,不需要额外安装,适合绝大多数场景。它的核心用法非常好记:`find [检索范围] -name "关键词匹配规则"`,如果不区分大小写的话把`-name`换成`-iname`就可以,关键词记得加星号通配符匹配任意字符,比如你要找所有文件名带nginx的配置文件,指定在/etc目录下检索,命令就是`find /etc -iname "*nginx*"`。如果要全系统搜索直接把范围换成根目录`/`就行,怕满屏跳无关权限错误的话,结尾加个`2>/dev/null`就能过滤无用提示,非常实用。find是实时扫描磁盘,所以准确性拉满,缺点就是如果检索范围太大速度会慢一点,日常用指定目标文件夹就够快了。
秒出结果locate:日常检索的效率神器
如果不想等,追求一秒出结果,那一定要用locate。locate不会实时扫描磁盘,它读取系统提前更新的文件路径数据库,检索速度比find快好几个量级。用法更简单:`locate -i 关键词`,`-i`同样是忽略大小写。缺点也很明显,因为依赖数据库,新创建的文件不会立刻被收录,想要同步最新文件信息,只需要输入`sudo updatedb`就能更新数据库,适合日常找存在已久的文件,打开终端输完命令结果就出来了,体验感拉满。

搜内容关键词:grep搞定文本内容检索
很多时候我们不是要找文件名,是要找哪个文件里包含指定关键词,这时候就该grep上场了。想要递归检索指定目录下所有文件的内容,只需要输入`grep -rni "你的关键词" [检索目录]`,参数`r`是递归检索子目录,`n`是显示匹配到的行号,`i`忽略大小写,比如你要找哪个配置文件里写了本地测试,直接输命令就能得到所有匹配结果,比打开一个个文件找快太多。
这三种方法覆盖了linux下绝大多数关键词搜文件的场景,新手根据场景选择就可以,再也不用对着满屏目录发愁,分分钟定位到目标文件。(全文738字)































