我知道locate
必须生成数据库并且速度要快得多,而不find
需要生成数据库并且速度不那么快。那么在什么情况下find
才locate
更有效/更有感情/给出更好的最终结果呢?
答案1
正如您所说,locate 有一个数据库,因此速度要快得多,而 find 必须遍历文件系统。但是locate的数据库只包含文件名(及其路径),而find可以根据其他元数据(例如mtime或size)选择文件。所以这是我的简历的多才多艺。此外,数据库必须批量更新,通常是每晚更新,因此最近创建的修改文件不会正确显示。此外,您还可以期望每个现代 Unix 系统都可以使用 find,但并非所有系统都启用了locate 的数据库。
所以,locate更快,用它来查找文件的位置,find更通用。没有更好的通用方法。
答案2
通常locate
数据库每天更新一次。因此,如果您需要搜索比一天更新的任何内容,您可能需find
要这样做。
另一方面,您需要搜索的文件系统越大,搜索速度locate
就越快find
。如果文件系统位于网络共享上,则尤其如此。