Bash find command


I’ve been using the find command simply since I can remember, but I’ve never really got to see the true power of this command. Combined with the -exec flag this command can throw up a lot of different uses. -exec allows you to work with other bash commands and operate on them.

A basic use would look like this:

$ find . -name "*" -type f -size +10M -exec rm {} \;

Let’s break this down. The first full-stop (sometimes called a period) tells the command which directory to work on - in this case, the current directory.

The second flag, -name, tells the command which file we are looking for. In this case the wildcard * will search all files in the directory.

The third falg, -type f directs that we are only looking for files (i.e. do not carry out this command on directories).

The fourth flag, -size +10M states that we are looking for files which are 10MB or greater.

Here comes the magic - the –exec flag does the grunt of the work. It will execute the rm (remove) command on the file which is denoted by {}.

Finally, we finish off the whole script with a \;, which is required due to using the -exec flag. You can string more than one -exec flag together after this semi-colon to carry out more than one command.