Summarise With AI
Back

Find Command in Linux with Examples and Notes

12 Jan 2026
5 min read

Key Highlights of the Blog

  • Linux's find command can be used to find files and directories according to their name, type, size, rights, ownership, and time.
  • As it does recursive searches, it is appropriate for complex and large directory structures.
  • Advanced filtering, logical operators, and actions on matched files are all supported by this command.
  • Gaining proficiency with Find facilitates work automation, file system cleanup, and increased productivity.
  • This blog provides simple, thorough explanations of the syntax, choices, useful examples, and real-world usage.

Introduction

Struggling to locate files quickly in a large Linux directory? The find command in Linux is the one tool that can save you from lots of manual searching.

Finding files by name, size, permissions, or time is a daily necessity, whether you're a student studying Linux, getting ready for an interview, or managing actual systems. When directories get big and complicated, simple commands frequently don't work well.

In this guide, you will learn how the find command in Linux works, its syntax, options, and real-world examples that help you search smarter, automate tasks, and manage file systems efficiently, explained in a clear, student-friendly way.

What do you mean by Linux Commands?

Linux commands are the fundamental building blocks of interaction with a Linux-based system. These commands enable users to carry out a variety of operations, including file management, process control, system configuration, and scripting-based job automation.

Compared to graphical user interfaces (GUI), the Linux command-line interface (CLI) offers more control and flexibility and is a potent and effective means of interacting with the operating system. Commands are usually carried out on the terminal, which deciphers user input and carries out the appropriate actions.

Find Command Options

The find command in Linux supports a wide range of options that help you refine your search. These options can filter files and directories based on name patterns, size, time, permissions, ownership, and more. For efficient file management and automation in Linux settings, it is crucial to comprehend these alternatives.

Common Find Command Options

The most helpful find command options, their functions, and sample commands demonstrating their use are summarized in the table below:

Option Purpose / What It Does Example Command
-name Search files by exact name (case-sensitive) find /path -name "example.txt"
-iname Case-insensitive name search find /path -iname "example.txt"
-type f Find only regular files find /path -type f
-type d Find only directories find /path -type d
-size +N Find files larger than N (e.g., +100M) find /path -size +100M
-size -N Find files smaller than N find /path -size -50k
-mtime -N Find files modified within last N days find /path -mtime -7
-atime -N Find files accessed within last N days find /path -atime -3
-ctime -N Find files whose metadata changed within N days find /path -ctime -5
-perm mode Find files with exact permissions find /path -perm 755
-perm /mode Find files where anyone has specified permission bits find /path -perm /111
-user username Search files owned by a specific user find /path -user john
-group groupname Search files owned by a specific group find /path -group staff
-empty Find empty files or directories find /path -empty
-maxdepth N Limit search to N directory levels find /path -maxdepth 2 -name "*.conf"
-prune Exclude a directory from search find / -path /tmp -prune -o -name "*.txt" -print
-exec Run a command on every matched file find /path -name "*.log" -exec rm {} \;
-delete Delete all found files find /path -name "*.tmp" -delete

Notes on Using These Options

  • Name searches are typically the most common and help locate specific files quickly using patterns.
  • Options like size and time use symbols such as + for “greater than” and - for “less than.”
  • Using pruning can significantly improve search performance by skipping large directories that you don’t need to search.
  • Action options such as -exec and -delete allow find to perform automated operations on searched results.

Tip

Always preview results with a print-only search before using options that modify or delete files (like -exec or -delete). This helps prevent accidental data loss.

Basic find syntax in Linux

Users can find files and directories based on predetermined criteria using the structured syntax of the find command in Linux. The find command in Linux has the following basic syntax:

find [path] [expression] [action]

1. Path

The directory where the search starts is specified by the path. Users can use / for the whole system and. for the current directory, or they can give an exact path (such as /home/user).

2. Expression

Options that filter search results make up the expression. Among the terms that are often used are:

  • -name <filename>: Searches for files by name.
  • -type <d|f>: Searches for directories (d) or files (f).
  • -size +100M: Finds files larger than 100MB.

3. Action

The action specifies what to do with the found files. Some common actions include:

  • -print: Displays found files (default action).
  • -exec <command> {} \;: Executes a command on every found file.

Finding All Files and Directories

The Linux Find Command allows users to list all files and directories recursively, making it a powerful tool for searching within a Linux filesystem. Below are different ways to list files and directories using find.

1. Listing Files and Directories

Use the find command with the directory path to list every file and directory from a given path:

find /usr/share

This command outputs every file and directory, including subdirectories, found in /usr/share. 

2. Listing Multiple Directories

By naming them in order, you may search more than one directory:

find /usr/share /etc /var

This command displays all contents recursively while searching for files and folders in /usr/share, /etc, and /var.

3. Listing Files in the Current Directory

Without specifically stating a path, you may use the following to list every file in the current directory:

find .

Here, . represents the current directory, so the command lists all files and directories within it, including hidden ones.

Searching for Files by Type

Users of Linux may use the Find Command to filter search results according to the file type. This is particularly useful when you need to locate only files, directories, or symbolic links within a given directory structure.

1. Finding Files

Use the following to look for regular files (-type f):

find /usr -type f

Directories and other special file types are not shown by this command, which examines the /usr directory and returns just normal files.

2. Finding Directories

Use the following to limit your search to directories (-type d): 

find /usr -type d

This command lists all directories inside /usr, including subdirectories, while ignoring regular files.

3. Finding Symbolic Links

Special files that point to other files or directories are known as symbolic links (-type l). To find all symbolic links, use:

find /usr -type l

This program only shows symbolic links after scanning /usr.

Searching for Files by Name

The Find Command In Linux allows users to search for files based on their names, with both case-sensitive and case-insensitive options.

1. Case-Sensitive Search

To find files by their exact name, use the -name option:

find /home -name "example.txt"

This searches the /home directory for a file named exactly "example.txt". It is case-sensitive, meaning "Example.txt" or "EXAMPLE.TXT" will not be matched.

2. Case-Insensitive Search

Use the -iname option to do a case-insensitive search:

find /home -iname "example.txt"

Regardless of capitalization, this command will locate "example.txt," "Example.txt", "EXAMPLE.TXT," and any other versions.

Searching by Size

The find command can also locate files based on their size using the -size option.

1. Finding Files Larger than 100MB

find /var/log -type f -size +100M

This command searches for all regular files (-type f) in /var/log that are larger than 100MB.

2. Finding Files Smaller than 50KB

find /home -type f -size -50k

This searches /home for files that are smaller than 50KB.

Searching by Time

The Find Command In Linux allows users to search for files based on their modification, access, or metadata change times. This is mainly helpful for keeping track of recently viewed, modified, or edited files.

1. Modification Time (-mtime)

To find files modified within the last 7 days, use:

find . -type f -mtime -7

This command searches the current directory (.) for files (-type f) that were modified in the last 7 days. The -7 flag means “less than 7 days ago.”

2. Access Time (-atime)

Use the following to locate files that were accessed in the last three days:

find . -type f -atime -3

This searches for files that have been opened or read within the last 3 days.

3. Change Time (-ctime)

To find files whose metadata changed within the last 5 days, use:

find . -type f -ctime -5

This searches for files where metadata (e.g., ownership, permissions, or location) was changed in the last 5 days.

Searching by Ownership

The Find command in Linux can locate files based on ownership, whether by a specific user or a group. System administrators who are in charge of user-specific files will find this very helpful.

1. User Ownership (-user)

To find files that are owned by a certain user:

find /path -user username

This looks for every file in /path that is associated with the username.

2. Group Ownership (-group)

To find files owned by a specific group:

find /path -group groupname

This searches for files where the group ownership is set to groupname.

Searching by Permissions

Results can also be filtered by file permissions using the find command.

1. Finding Files with Exact 755 Permissions

find /path -perm 755

This command finds files with precisely 755 permissions (rwxr-xr-x), meaning that others have read and execute access while the owner has complete access.

2. Finding Files with Any Executable Permission

find /path -perm /111

This command finds files that have execute (x) permission for anybody (owner, group, or others).

Executing Commands on Found Files

With the -exec and -delete arguments, the find command may perform actions on files in addition to aiding in their location.

1. Using -exec to Execute Commands

The -exec option allows you to run a command on each found file.

Example: Delete files named temp.log

find /path -name "temp.log" -exec rm {} \;

In this case, each file identified is represented by {}, and the command ends with \;.

2. Using -delete to Remove Files

-exec is not required when using the -delete option to remove files.

Example: Delete temp.log files directly

find /path -name "temp.log" -delete

For bulk deletions, this approach is more straightforward and effective.

Advanced Search Techniques with find

For more accurate file management, you may combine numerous criteria and exclude certain results using the advanced search options provided by the find command.

1. Combining Multiple Criteria

You can filter files based on multiple attributes.

Example: Find .log files larger than 10MB modified in the last 7 days

find /path -type f -name "*.log" -size +10M -mtime -7

This command helps locate large log files that have been recently modified.

2. Excluding Directories

Use -not -type d or ! -type d to remove directories from search results.

Example: Find all files but exclude directories

find /path -not -type d

This ensures that only files (not directories) appear in the search results.

Limiting and Customizing Search Scope

The find command provides a number of parameters to narrow down and refine your search for more focused results when working with big directory structures. You may increase productivity and prevent overwhelming results by limiting the search area.

Key Techniques:

  • Setting Search Depth with -maxdepth:
    Use the -maxdepth option to limit how many directory levels find will search. For example, to search only in the current directory and its immediate subdirectories:
find . -maxdepth 2 -name "*.conf"
  • Excluding Directories with -prune:
    You can exclude particular folders from your search by using the -prune option. To find.txt files, for example, without going through the /tmp directory:
find / \
    -path /tmp -prune -o \
    -name "*.txt" -print
  • Refining with Other Options:
    Combine options like -type, -size, or -name with depth and pruning to further narrow your results.
  • Optimization Levels:
    Although these are more advanced and less frequently utilized in simple searches, certain versions of find provide optimization options (such as -O1, -O2) to modify search performance.

Examples:

  • Limit search to three levels deep:
find /var/log -maxdepth 3 -type f
  • Exclude multiple directories:
find /home \
    -path "/home/user/tmp" -prune -o \
    -path "/home/user/cache" -prune -o \
    -type f -name "*.log" -print

You may save time and concentrate on the most pertinent files or directories by learning how to customize the search command to your own requirements.

Finding Empty Files and Directories

Finding empty files and directories on your Linux filesystem is simple with the help of the find command. It is especially helpful for managing temporary files, cleaning up the filesystem, and confirming the integrity of the directory structure.

Key Options:

  • -empty: Finds files or directories that are empty.
  • -type f: Restricts the search to regular files.
  • -type d: Restricts the search to directories.

Examples:

  • Find all empty files:
    To locate empty files in the current directory and its subdirectories:
find . -type f -empty
  • Find all empty directories:
    To identify empty directories (which may be safe to remove):
find . -type d -empty
  • Delete empty files with confirmation:
    To remove empty files but prompt for confirmation before each deletion:
find /path -type f -empty -exec rm -i {} \;
  • Delete empty directories (requires administrative privileges for system-wide cleanup):
    To clean up empty directories across the entire filesystem, you may need to use sudo:
sudo find / -type d -empty -delete

Best Practices:

  • Always examine the output before using the -delete option to prevent unintentionally erasing essential files or folders.
  • To examine what will be impacted, use the -print action first.
  • Administrative privileges may be needed for removing, particularly system-wide.

By regularly identifying and cleaning up empty files and directories, you can maintain a tidy directory structure and free up space on your Linux system.

Executing Actions on Found Files

The find command in Linux does more than just locate files; it can also perform actions on each file it finds. This capability is especially useful for automating repetitive tasks, such as deleting, moving, or modifying files in bulk.

The most common way to execute a command on found files is by using the -exec option. The syntax is:

find [path] [expression] -exec [command] {} \;

Here, {} is replaced by each file found, and \; indicates the end of the command.

Examples:

  1. Deleting files:
    To delete all .tmp files in /tmp and its subdirectories:
find /tmp -type f -name "*.tmp" -exec rm {} \;
  1. Changing permissions:
    To make all .sh files executable:
find /home/user -type f -name "*.sh" -exec chmod +x {} \;
  1. Copying files:
    To copy all .conf files to a backup directory:
find /etc -type f -name "*.conf" -exec cp {} /backup/configs/ \;

The -ok option can be used in place of -exec for further security. Before executing the command on each file, it will ask for confirmation:

find /var/log -type f -name "*.log" -ok rm {} \;

By combining find with -exec or -ok, you can automate powerful file management tasks directly from the command line.

Combining Multiple Search Criteria

Using logical operators like -and, -or, and ! (not), you may combine several conditions with the find command to generate intricate search queries. You can narrow down your searches to find files that simultaneously satisfy many criteria due to this versatility.

Logical Operators:

  • -and: Both conditions must be true (often implied if you list conditions in sequence).
  • -or: At least one condition must be true.
  • !: Negates a condition (i.e., "not").

Examples:

  1. Find files that match multiple criteria (AND):
    To find all .log files larger than 10MB:
find /var/log -type f -name "*.log" -and -size +10M
  1. Find files that match either of two criteria (OR):
    To find files ending with .jpg or .png:
find . ( -name ".jpg" -or -name ".png" )
  1. Find files that do not match a condition (NOT):
    To find all files except those owned by root:
find /home ! -user root
  1. Combine with -exec for actions:
    To remove.tmp files that are more than seven days old:
find /tmp -type f -name "*.tmp" -mtime +7 -exec rm {} \;

Grouping Conditions:

Expressions can be grouped and the evaluation order can be controlled by using escaping parentheses \( and \).

Summary:

By combining multiple search expressions and logical operators, you can tailor the find command to locate exactly the files you need, even in complex scenarios.

How can the find command in Linux combine multiple search criteria?

The find command allows you to refine your searches by combining multiple criteria using logical operators such as -and, -or, and ! (not).  This enables you to develop complicated questions that are tailored to your specific needs. 

Basic Syntax:

find [path] [criteria 1] [operator] [criteria 2] [action]

Examples:

  1. Find files with a specific extension and size:
    To find all .log files larger than 10MB:
find /var/log -type f -name "*.log" -size +10M
  1. Find files matching one of several patterns:
    To find files ending with .jpg or .png:
find . ( -name ".jpg" -or -name ".png" )
  1. Exclude certain files:
    To find all files except those owned by the user root:
find /home -not -user root
  1. Combine the name and time filters:
    To find .conf files that have been changed in the previous three days:
find /etc -type f -name "*.conf" -mtime -3

Grouping with Parentheses:

Use escaping parentheses to aggregate conditions when utilizing several conditions (e.g., \ and \). This ensures the correct order of evaluation.

By combining criteria, you can tailor the find command to return exactly the files you need, making searches highly efficient and precise.

How to leverage ManageEngine EventLog Analyzer for Linux file monitoring?

A specialized tool is needed for ongoing monitoring and auditing of file access or modifications, even though the find command is great for searching and managing files on demand. A complete solution for monitoring file activity on Linux systems is ManageEngine EventLog Analyzer.

Key Features:

  • Real-time Monitoring:
    File creation, modification, deletion, and access events are all tracked in real time by EventLog Analyzer.
  • Audit Trails:
    It offers thorough records that indicate who accessed or modified a file, when it happened, and what was done.
  • Alerting:
    Configure alerts to notify you instantly if sensitive files are accessed or modified.
  • Compliance Reporting:
    Create reports that show file access patterns and security incidents in order to comply with regulations (such GDPR, HIPAA, or PCI DSS).

How to Use with Linux:

  1. Install EventLog Analyzer on your monitoring server.
  2. Configure your Linux systems to forward audit logs (using syslog or auditd) to the EventLog Analyzer server.
  3. To select which files or folders to track, set up file monitoring policies in the program.
  4. Examine dashboards and reports to keep an eye on file activity, spot questionable activity, and make sure policies are being followed. 

By integrating EventLog Analyzer with your Linux environment, you gain visibility into file operations and can proactively respond to potential security incidents.

Conclusion

The find command in Linux is an essential tool for file management and system administration. With its many choices, users may run commands on files they find and filter files according to a variety of parameters. Users may automate repetitive activities and improve file system management by becoming proficient with the search command.

Key Points to Remember

  1. The find command in Linux evaluates search conditions from left to right, which means the order of expressions can affect the final output, especially when using logical operators.
  2. Only when all search requirements have been met are actions like -exec, -delete, and -ok used; they are not used during the search process. 
  3. Options like -maxdepth and -prune are essential for limiting search scope and improving performance in large file systems. 
  4. For proper interpretation, time-based options (-mtime, -atime, -ctime) measure time in 24-hour intervals rather than precise timestamps.
  5. It is advised to test the locate command without actions before carrying out destructive instructions in order to verify results and avoid inadvertent data loss.

Frequently Asked Questions

1. What is the find command used for in Linux?

Using a variety of parameters, including name, type, size, time, and permissions, the find command in Linux is used to look for files and directories inside a given path. It enables users to efficiently carry out intricate searches and take action on the files they find.

2. How do I search for files by name using the find command?

Use the -name option to find files by their specific name:

find /path -name "filename"

This command will look for files with the name "filename" in the specified path, taking into account exact matches (case-sensitive).

3. Can I search for files with case-insensitive names?

Yes, to search for files with case-insensitive names, use the -iname option:

find /path -iname "filename"

This enables the search to find files (such as filename, FileName, and FILENAME) regardless of capitalization.

4. How can I find files based on size using find?

You can search for files by size using the -size option. For example, to find files larger than 100MB:

find /path -type f -size +100M

You can also use -size -50k to find files smaller than 50KB, or + and - to define greater or lesser than a given size.

5. How can I execute commands on files found by find?

You can execute commands on files found by find using the -exec option. For example, to delete all .log files:

find /path -name "*.log" -exec rm {} \;

In this case, {} stands for each file that was located, and "- denotes the command's conclusion.

6. Can find be used to search for directories?

Yes, to search for directories only, use the -type d option:

find /path -type d

This will search for directories within the given path, excluding regular files.

7. How do I exclude certain directories from the find search?

Use the -prune option to exclude certain folders from the search. To omit the /tmp directory, for instance:

find /path -path /path/tmp -prune -o -name "*.txt" -print

While locating.txt files elsewhere, this avoids looking within /tmp.

Summarise With Ai
ChatGPT
Perplexity
Claude
Gemini
Gork
ChatGPT
Perplexity
Claude
Gemini
Gork
Chat with us
Chat with us
Talk to career expert