使用 locate 查找目录

Mic*_*ael 20 find

我一直使用locate来查找我知道名称的文件,locate非常快,我喜欢它。对于最近创建的文件find很棒,通常使用最近创建的文件我知道它们基本上是在哪里创建的,所以我不必搜索我的整个文件系统。

当我忘记了目录的位置时, find 和 locate 似乎都不理想。

Locate 总是会吐出太多信息,因为目录中的每个文件也是 locate 的匹配项。例如,如果我在我的文件系统某处搜索名为 log 的目录,则定位日志将返回大量结果。如果我对 find 做同样的事情,find / -name log -type d find 需要几分钟才能运行,并且每次遇到无法读取的文件夹时都会吐出各种权限错误。

有没有更好的办法?

回答:所以我坚持使用 grep 直到找到其他东西:

locatedir () {
    for last; do true; done
    if [[ $last == *\/* ]]
    then
        locate $@ | grep "${last}\$"
    else
        locate $@ | grep "/${last}\$"
    fi
}
Run Code Online (Sandbox Code Playgroud)

Flo*_*sch 28

您可以使用以下选项--regex( -r) locate

locate -r '/log$'
Run Code Online (Sandbox Code Playgroud)


mis*_*ben 12

一种方法(我怀疑可能有更好的方法)是使用 grep 仅返回以文件夹名称结尾的那些路径:

locate foldername | grep /foldername$
Run Code Online (Sandbox Code Playgroud)


Rol*_*Xor 5

你有没有尝试过:

locate /home/insertusernamehere/*/filename?

或者

locate file | grep -i '^/home/.*/examplesubdirectory'?

或任何此类变化?