这个题真的考烂了,find、locate、grep三个放一块问,十个面试八个问。 很多人容易搞混,grep是找文件内容啊!find和locate是找文件位置啊!别搞反了!
先说locate,它是基于系统提前建的数据库来查找,速度特别快,缺点是新建的文件没更新数据库的话它找不到,一般用来快速找文件,不需要实时准确的时候用。 find才是实时查找,它直接遍历磁盘目录,所以速度慢一点,但准确,想要找哪个时间修改的、多大权限的文件,find都能筛,find功能最强,基本所有查找需求都能满足,就是费时间。
举个例子,你要找当前目录下面所有名字带test的txt文件,find就是 find ./ -name "*test*.txt",这个命令写出来面试官就知道你会用了。 那grep呢?grep是在文件里面搜内容啊,你改完代码忘了哪个文件写了个TODO,直接grep "TODO" ./ -r,就能搜出来所有包含TODO的文件行,这个才是grep的用法。
别去背那些没用的参数,你说几个常用的就行,比如find的-name按名字找,-size按大小找,-mtime按修改时间找,够了,面试官不会难为你,知道你会用就行。