DEV Community

Pete Freitag
Pete Freitag

Posted on • Originally published at petefreitag.com on

Searching for files by file name on Mac or Linux

Have you ever had to find a file by a file name or file extension? Sure you have! Here's how I locate a file when I'm using a Mac or Linux shell.

The find command

The find command is really handy because it will list every file in the current directory and all sub directories. You can also give it a path, so if you want to search just your home directory (and it is not your current working directory) you can just run:

find ~

And that will list every single file in your home directory (The ~ is a shortcut for home directory).

The find command will be installed by default on your Mac, and just about every linux distribution.

While that is handy, it might list out thousands of files, so our next step is to search the results for the file name we are looking for.

The grep command

The grep command can be used to search the output of another command by using the | pipe operator. For example if I run:

find ~ | grep log

I can search my home directory for any file with log in the file name (or directory name).

Since grep supports regular expressions, if I just want to search file files ending in .log I can do that like this:

find | grep '\.log$'

Searching by file name using find

After my initial thought to use grep, I realized that the find command also has a lot of builtin options you can leverage, so we can simplify this by using:

find -name '\*.log'

There are a bunch of options you might find handy, run man find to see them all.

Some of you might say that you can just use Finder on a Mac to search for files by name, and you'd be correct, that also works, but this is much faster and more flexible.

Top comments (0)