4

When using grep you can search for a specific regex, but only inside of a file. Is there any way, I can search for a folder name?

migrated from stackoverflow.com Apr 6 '11 at 0:29

This question came from our site for professional and enthusiast programmers.

10

I usually use find:

$ find . -name 'FolderBasename*' -type d

or for more complex queries

$ find . -regex '{FolderRegex}' -type d

As pointed out in the comments if you want case insensitive searches do -iname and -iregex

  • 3
    -name doesn't take a regular expression. If you need to match with a regular expression, you probably want -regex or -iregex – Mark Longair Apr 5 '11 at 19:32
  • @Mark You're right - my bad there. I usually only need the supported * and ? (see man find) to get things found. – AlG Apr 5 '11 at 19:37
  • Could you also elaborate on the options. It's an easy online search, but I would still like to know. – Sharan Duggirala Dec 6 '16 at 7:49
6

If you really mean regexp instead of shellglob, you may want to use

find <path> -regex '<regex>' -type d

eg.

find Code/ -E -regex '(bin|redblack)_tree\.hs' -type d

the option -E turns on extendend regexp, see man find for more.

0

If you are just concerned with matching the name you can simply use '-name' in find.

find <path> -name '<regex>' -type d
-1

find is far better but a clunky answer to your question:

ls -l | grep '^d'

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy