How to Use the Find Command in Linux

Posted on by J. Mays | Updated:
Reading Time: 2 minutes

The find command is a wonderfully useful tool that allows you to find files or folders by searching for them in multiple ways.

Find searches through one or more directory trees of a file system, locating files based on some user-specified criteria. Further, find allows the user to specify an action to be taken on each matched file. Thus, it is an powerful program for applying actions to many files.

The find command will traverse the file system from the location that you run it.  This can be used to your advantage as instead of having to parse through the entire directory structure, find can be used on a small targeted area.

Basic Syntax

find <absolute path> <search variables>

While it is possible to use find using relative paths, it is never a good practice to do so.  Using absolute paths will help prevent you from making harmful changes by insuring that you are making to the files and folders you specifically want too.

One of the most common syntax used in conjunction with find is using a flag with a numerical value.  The syntax for these numerical values follows this format:

  • +n : greater than n
  • -n : less than n
  • n : exactly n

Some Examples of Find in Use

Find all files larger than 2 GB (useful for finding pesky logs that prohibit apache from starting)

find /usr/local/apache -type f -size +2048000

Find all files owned by the user ”fred” in /home

find /home -user fred

Find  all files with 777 permissions in /home

find /home -perm 777

Find only directories with 777 perms

find /home/*/public_html/ -type d -perm 777

Find only directories with 777 perms and change to 755 perms

find public_html/ -type d -perm 777 -exec chmod 755 ‘{}’ \;

Find data owned by user nobody and change ownership to user

find . -user nobody -exec chown usernamebob: ‘{}’ \;

Find where that pesky config file may be located with a wildcard, when you don’t know the exact name

find public_html/ -type f -name “*conf*”

Search files for a specific string of text

find public_html/ -type f -print0 |xargs -0 grep -si “searchabletext”

Use ‘or’ and wildcard to find specific files, and list them, i.e. ls any files ending in .php or .html

find . \( -name ‘*php’ -or -name ‘*html’ \) -type f -ls

Find php files modified within last 60 days:

find /home/*/public_html -name ‘*.php’ -type f -mtime -60

Find file modified between 2 and 29 minutes ago. (Did someone change a file within the past half-hour)

find public_html/ -type f -mmin +1 -mmin -30

Find hidden files or directories and how much space they are consuming. Looking for anything 1M and over

find /home/user/mail/ -maxdepth 1 -type d -name “.*” |xargs du -shc |grep M |less

===

Liquid Web’s Heroic Support is always available to assist customers with this or any other issue. If you need our assistance please contact us:
Toll Free 1.800.580.4985
International 517.322.0434
support@liquidweb.com
https://my.liquidweb.com/

Avatar for J. Mays

About the Author: J. Mays

As a previous contributor, JMays shares his insight with our Knowledge Base center. In our Knowledge Base, you'll be able to find how-to articles on Ubuntu, CentOS, Fedora and much more!

Latest Articles

Blocking IP or whitelisting IP addresses with UFW

Read Article

CentOS Linux 7 end of life migrations

Read Article

Use ChatGPT to diagnose and resolve server issues

Read Article

What is SDDC VMware?

Read Article

Best authentication practices for email senders

Read Article