搜索比查找更快

搜索比查找更快

有没有比find.我正在/正在做:-

$sudo find / -perm +4000

但需要很长时间才能找到所需的信息。我知道大多数设置特定权限位的文件都是静态/非动态的。

我试过

[$] sudo locate --all / -perm +4000                                                                                               
locate: invalid option -- 'p'

但可以看出失败了。任何想法我如何使用locate 来做同样的事情。

只是共享/usr/bin/locate符号链接到,/etc/alternatives/locate而共享又符号链接到/usr/bin/mlocate

答案1

不幸的是,mlocate它不会索引文件权限,因此您必须使用 扫描文件系统find,除非您找到具有此功能的定位实现(或mlocate自行扩展)。

答案2

正如 @shirish 提到的,mlocate 不索引文件权限。但我还是有一些建议给你:

首先,从 find 手册来看,-perm +mode 已被弃用,因此您应该使用 -perm /mode 代替。

-烫发+模式

已弃用的旧方法,用于搜索具有模式集中任何权限位的文件。您应该使用 -perm /mode 代替。尝试将“+”语法与符号模式一起使用将产生令人惊讶的结果。例如,“+u+x”是有效的符号模式(相当于+u,+x,即0111),因此不会被评估为-perm +mode,而是作为精确模式说明符-perm mode,因此它匹配具有精确权限 0111 的文件,而不是具有任何执行位设置的文件。如果您发现这一段令人困惑,那么您并不孤单 - 只需使用 -perm /mode。这种形式的 -perm 测试已被弃用,因为 POSIX 规范要求将前导“+”解释为符号模式的一部分,因此我们转而使用“/”。

-烫发/模式

为文件设置任何权限位模式。这种形式接受符号模式。如果使用符号模式,则必须指定“u”、“g”或“o”。有关一些说明性示例,请参阅示例部分。如果模式中没有设置权限位,则此测试匹配任何文件(这里的想法是与 -perm -000 的行为一致)。

其次,您可以尝试加快查找速度:为此,您需要尽可能具体。例如:

find /some/path ...

会减少搜索时间,因为您指定了搜索路径(/some/path),而不是搜索整个根目录(/)

最后,您可以排除您不想在搜索过程中扫描的系统文件夹。例如:

 find /some/path -not \( -path /excluded/path -prune \) -name *.js

相关内容