![搜索比查找更快](https://linux22.com/image/76750/%E6%90%9C%E7%B4%A2%E6%AF%94%E6%9F%A5%E6%89%BE%E6%9B%B4%E5%BF%AB.png)
有没有比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