使用locate命令进行快速查找文件
最近,发现locate某条命令使用起来比较实用方便快捷。那就是:
locate +模糊路径+filename
或
locate –w +模糊路径+filename
这里的模糊路径是指你能知道的路径(比如,工程的根目录,或稍微更精确一些的路径)。
下面就比较一下locate命令使用情况查找效果及效率的比较:
假如要查找mnt/winxpF/***工程根目录下的BluetoothUuid.java文件(其实该文件在frameworks目录下)。如下图1
图1
1、使用“locate +模糊路径+filename”命令查找结果以及效率。如下图2
使用locate /mnt/winxpF/projectname/*/BluetoothUuid.java命令,则能准确找到该文件。其中“*”或“**”为工程目录下的模糊路径通配符。(由于winxpF目录下只有一个工程,没有其它文件目录,所以以下的截图中就省略了projectname了。)
使用time locate /mnt/winxpF/*/BluetoothUuid.java命令(要查看某个命令的执行时间,只需在该命令的前面加上time),除了能准确找到该文件外,还可以看到执行该命令(查找该文件)使用的时间。
图2
当然,如果文件名也可以使用模糊的名称(如BluetoothUuid.* 或Bluetooth*.java),不过查找出来的文件以及效率就稍微慢一些。如下图3采用模糊名称BluetoothUuid.*所查找到的结果
图3
2、使用locate –w +模糊路径+filename命令查找结果以及效率。如下图4
图4
另外,使用locate –w filename命令则和下面的locate –b filename命令结果和效果是一样的。
3、使用locate –b filename命令查找结果以及效率。如下图5和图6
图5
图 6
4、使用locate filename命令查找结果以及效率。如下图7和图8
图7
图8
通过以上比较可知:从查找效率上看,则是locate –b更为快一些(如果查找的结果集中的记录多,那么就不一定就是该命令了);从实用上,还是locate +模糊路径+filename比较好。以上的4个命令中,只有locate +模糊路径+filename和locate –w +模糊路径+filename命令更为准确一些,其它的则是查找某个路径下的***filename。
针对以上locate命令的使用中,出现的两个参数-b和-w,查看locate命令的帮助命令可知道其作用,如下图9
图9
呵呵!至于原理这里就不多说了,网上实在是太多了。
还有其他的诸如find、whereis、which和type查找方法,这里就不做介绍了。