Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

I use locate all the time to find files that I know the name of, locate is very fast and I love that. For recently created files find is great, normally with recently created files I know where basically they were created so I don't have to search my entire file system.

When I've forgotten the location of a directory however neither find nor locate seem ideal.

Locate always spits out far too much information because every file within a directory is also a match for locate. For instance if I was searching for a directory named log somewhere on my file system locate log would return tons and tons of results. If I do the same thing with find, find / -name log -type d find takes minutes to run and spits out all sorts of permissions errors every time it encounters a folder it can't read.

Is there a better way?

Answer: So I'm sticking with grep until I find something else:

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

3 Answers 3

up vote 3 down vote accepted

A way (I suspect there may be a better way) is to use grep to return only the those paths which end in your folder name :

locate foldername | grep /foldername$
share|improve this answer

You can use the option --regex (-r) of locate:

locate -r '/log$'
share|improve this answer
    
Yes (+1). locate has its own built-in regex capablility: -r or --regex ... for full range of options see: info locate –  Peter.O Nov 28 '10 at 4:25
    
I knew there must be a better way! –  misterben Nov 28 '10 at 12:32

Have you tried:

locate /home/insertusernamehere/*/filename?

or

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

or any variation of such?

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.