Linux文件查找locate小结

367 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

在linux中找到一个文件有时候是一件比较难的事,尤其是刚刚会了cd和ls的时候,当我们要去找一个文件时甚至可能一个个cd进去,再cd出来(反正我干过这样的事)。当时应该要想想,这么完善的系统怎么可能没有一个强大的搜索功能呢,只可惜当时我的思维还停留在Windows那种搜索框直接输入关键词等结果的水平,俗称傻瓜式。下面简单总结一下linux中的文件查找。

第一个要知道的命令是locate,通过名称来查找文件,我们知道linux中万物皆文件,目录也是文件的一种形式。这里以macos上的命令为例,其实是一样的功能:

➜  ~ locate /usr/share/man/mann/zip
/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/share/man/mann/zip.n
/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/share/man/mann/zip.n
/System/Volumes/Update/mnt1/usr/share/man/mann/zip.n
/usr/share/man/mann/zip.n

无论列出的是目录还是文件名,都可以快速搜到,但最好给出一些准确的关键词,这样模糊搜索会出来非常多的结果。

也可以结合grep一起使用,在查询的同时过滤关键字,比如这样:

➜  ~ locate /usr/share/man/mann | grep zip | grep MacOSX10.15.sdk
/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/share/man/mann/zip.n

这里就找到了更精确的结果,而且速度也非常快,比windows的傻瓜式操作不知道快到哪里去了。简单科普一下,locate其实查找的是linux内部的文件路径数据库,这个数据库由一个updatedb的程序创建且每天执行一次用来更新最新的文件和路径,如果发现搜不到的情况可以手动执行一下updatedb。