使用locate查找目录
我一直使用locate来查找我知道名字的文件, locate非常快,我很喜欢。 对于最近创建的文件, find很棒,通常使用最近创建的文件,我知道它们基本上是在哪里创建的,所以我不必搜索整个文件系统。
当我忘记了目录的位置但是找不到或找不到似乎是理想的。
定位总是吐出太多信息,因为目录中的每个文件也与locate匹配。 例如,如果我在我的文件系统上的某处搜索名为log的目录,则查找日志将返回吨和大量的结果。 如果我使用find执行相同的操作,请查找/ -name log -type d find需要几分钟才能运行,并在每次遇到无法读取的文件夹时吐出各种权限错误。
有没有更好的办法?
答:所以我坚持使用grep,直到找到别的东西:
locatedir () { for last; do true; done if [[ $last == *\/* ]] then locate $@ | grep "${last}\$" else locate $@ | grep "/${last}\$" fi }
一种方式(我怀疑可能有更好的方法)是使用grep只返回那些以你的文件夹名称结尾的路径:
locate foldername | grep /foldername$
您可以使用选项--regex
( -r
) locate
:
locate -r '/log$'
你有没有尝试过:
locate /home/insertusernamehere/*/filename
?
要么
locate file | grep -i '^/home/.*/examplesubdirectory'
locate file | grep -i '^/home/.*/examplesubdirectory'
?
或者这样的任何变化?
这里是
locatedir () { locate "$*" | while read line do if [ -d "$line" ] ; then echo $line ; fi done } locatedir $*