Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Trying to use locate command to find an exact match for the given pattern. However it results showing all matching files..

For example: I want to find a binary named: node

But it gives me all matches containing this word:

server2# locate node
share|improve this question
up vote 5 down vote accepted

You may use grep with locate

server2# locate node | grep node$

The $ sign will tell grep to look at the end of the string.

share|improve this answer
Result is the same. It brings up different matches ending with node... /usr/ports/www/p5-WebService-Linode. I guess it should be /node$ ? – Radio Sep 27 '12 at 13:40
Yes you can try this too (But I'm not sure if the / character must be escaped or not). Have you tried locate -b ? – lracicot Sep 27 '12 at 13:43
haven't been such parameter ever. Fwd slashes don't need to be escaped. – Radio Sep 27 '12 at 14:11

If you look at locate --help, you may find:

  -r, --regexp REGEXP    search for basic regexp REGEXP instead of patterns
      --regex            patterns are extended regexps

You can use -r to provide a regexp pattern to locate:

locate -r /node$

The / ensures node is at the start of the file name. The $ ensures node is at the end of the file name. This will give you only the files matching the exact file name.

If you want to do a case-insensitive search (matches Node, NODE, nOdE, etc), add -i:

locate -i -r /node$

If locate does not support regexp, you can use grep (as mentioned by Iracicot):

locate node | grep /node$
locate -i node | grep -i /node$
share|improve this answer

Your Answer


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.