StrangeRanger Asked: 2017-12-16 14:57:57 +0800 CST2017-12-16 14:57:57 +0800 CST 2017-12-16 14:57:57 +0800 CST `find` 和 `locate` 最好用在什么情况下?[关闭] 772 我知道locate必须生成数据库并且速度要快得多,并且find不需要生成数据库并且速度不快。那么在什么情况下find更locate有效/更有效/给出更好的最终结果? find command 2 个回答 Voted Best Answer Thomas 2017-12-16T15:05:27+08:002017-12-16T15:05:27+08:00 正如您所说, locate 有一个数据库,因此速度更快,而 find 必须遍历文件系统。但是 locate 的数据库只包含文件名(及其路径),而 find 可以根据 mtime 或 size 等其他元数据选择文件。所以这是我的多才多艺的简历。此外,数据库必须批量更新,通常是每晚更新一次,因此最近创建的修改过的文件无法正确显示。您还可以期望每个现代 Unix 系统都有 find 可用,但并非所有系统都启用了 locate 的数据库。 所以,locate比较快,用它来查找文件的位置,find比较通用。没有更好的通用性。 telcoM 2017-12-16T15:17:55+08:002017-12-16T15:17:55+08:00 通常,locate数据库每天更新一次。因此,如果您需要搜索比一天更新的任何内容,您可能需find要这样做。 另一方面,您需要搜索的文件系统越大,locate结束的速度就越快find。如果文件系统位于网络共享上,尤其如此。
正如您所说, locate 有一个数据库,因此速度更快,而 find 必须遍历文件系统。但是 locate 的数据库只包含文件名(及其路径),而 find 可以根据 mtime 或 size 等其他元数据选择文件。所以这是我的多才多艺的简历。此外,数据库必须批量更新,通常是每晚更新一次,因此最近创建的修改过的文件无法正确显示。您还可以期望每个现代 Unix 系统都有 find 可用,但并非所有系统都启用了 locate 的数据库。
所以,locate比较快,用它来查找文件的位置,find比较通用。没有更好的通用性。
通常,
locate
数据库每天更新一次。因此,如果您需要搜索比一天更新的任何内容,您可能需find
要这样做。另一方面,您需要搜索的文件系统越大,
locate
结束的速度就越快find
。如果文件系统位于网络共享上,尤其如此。