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?

link|improve this question
feedback

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

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

4 Answers

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.

link|improve this answer
feedback

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

link|improve this answer
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. – qor72 Apr 5 '11 at 19:37
feedback

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

find <path> -name '<regex>' -type d
link|improve this answer
feedback

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

ls -l | grep '^d'
link|improve this answer
feedback

Your Answer

 
or
required, but never shown