使用locate查找目录

使用locate查找目录

我用定位我一直在寻找我知道名字的文件,定位非常快,我喜欢这一点。对于最近创建的文件寻找很棒,通常对于最近创建的文件,我知道它们基本上是在哪里创建的,所以我不必搜索整个文件系统。

当我忘记目录的位置时,查找和定位似乎都不理想。

定位总是会吐出太多信息,因为目录中的每个文件也与定位相匹配。例如,如果我在文件系统的某个地方搜索名为 log 的目录定位日志会返回大量结果。如果我用 find 做同样的事情,查找/-名称日志-类型 dfind 需要几分钟才能运行,并且每次遇到无法读取的文件夹时都会输出各种权限错误。

有没有更好的办法?

答案:因此我会坚持使用 grep 直到找到其他东西:

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

答案1

您可以使用以下选项--regex-rlocate

locate -r '/log$'

答案2

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

locate foldername | grep /foldername$

答案3

你有没有尝试过:

locate /home/insertusernamehere/*/filename

或者

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

或者任何类似的变化?

答案4

这里是

locatedir () {
    locate "$*" | while read line
    do 
    if [ -d "$line" ] ; then echo $line ; fi
    done
}

locatedir $*

相关内容