Searching Mac Through Terminal?
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 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