Searching Mac Through Terminal?

Searching Mac Through Terminal?

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.

2

4 Answers

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.

3

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
2

Your Answer

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

David Miller
Author

David Miller

David Miller brings 15 years of experience in global economics, personal finance strategy, and market dynamics. He specializes in turning complex economic trends into actionable insights for everyday readers.