are there any commands to search your Mac using terminal? I tried usin grep to search but it seems somewhat unresponsive and nothing comes up.

For example, I would type "grep Files" (A folder name) and it just prints a blank line and nothing happens.

  • possible duplicate of Search through text files in Mac OS X
    – Chealion
    Aug 18, 2010 at 15:18
  • I'm interested in searching through all types of files; Not necessarily excluding text files but not only text files.
    – JFW
    Aug 19, 2010 at 3:44

4 Answers 4


You can also use the mdfind command in order to perform a search with Spotlight. More info here.

Use mdfind -name searchterm in order to retrieve files with the name searchterm. Use mdfind searchterm to perform a search on file name and content.


If you just want to find files with a certain name, use find

The man page can be found HERE or by typing man find at the terminal prompt.

Basically, find will recursively look for a file meeting criteria you specify. The easiest example:

find . -name file_name -print

That will search for a file named "file_name" starting in the current directory and searching below and print the files with that name.

find ~ -name ".DS_Store" -delete

That will find all the .DS_Store files and delete them.

You can search by name, regex, date. You can act on the file in any Unix way with the -exec predicate.

You can also use find as the start of a more complex pipeline of actions. Example:

find . -type f -print | egrep -i '\.m4a$|\.mp3$'

Will find all the files with extensions .m4a or .mp3

find . -type f -print | egrep -i '\.m4a$|\.mp3$' | wc -l

Will give you a count of those files.

  • If -print is the only predicate, it can be omitted; also, there's simple globbing available. Thus finding all of the .txt files under a directory foo would be done with find foo -name \\*.txt Aug 18, 2010 at 17:35
  • @yoshi: That is absolutely false. Typing find . IS recursive from the cwd. Try typing find . in your root directory!
    – drewk
    Dec 1, 2012 at 2:49
  • My bad could swear it wasn't recursive but maybe server has chocked -shrug-
    – nuala
    Dec 7, 2012 at 10:49

If you want to search through a whole folder, just use -r on grep:

grep -r pattern folder/to/search

With find, you can also use xargs:

find folder/to/search -name '*.txt' | xargs grep pattern

or to make sure that you search two files at a time and therefore have the filenames specified:

find folder/to/search -name '*.txt' | xargs grep -n2 pattern

grep expects both a pattern and a filespec. If one is missing then it uses what is passed as the pattern, and waits for the data to search via standard input.

If you want to use a more complex filespec then use find.

find ~ -name '*.txt' -exec grep -q 'secret' {} \; -print
  • I just basically want it to find files that have the name that I enter into the command.
    – JFW
    Aug 18, 2010 at 12:11
  • In that case you don't need to use the -exec predicate in find. Aug 18, 2010 at 12:13

Your Answer

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

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