6 Examples to Find Files in Linux with Find Command

The Linux find command is a powerful tool that enables system administrators to locate and manage files and directories based on a wide range of search criteria. 

It can find directories and files by their name, their type, or extension, size, permissions, etc.

Find Command Syntax

The general syntax for the find command is as follows:

find [options] [path...] [expression]

  • The options attribute controls the treatment of the symbolic links, debugging options, and optimization method.
  • The path… attribute defines the starting directory or directories where find will search the files.
  • The expression attribute is made up of options, search patterns, and actions separated by operators.

 

Find all the files in the /var/log directory that were modified in the last 7 days:

find /var/log -mtime -7

How to Use find Command in Linux

For example, if you want to find all of the files that have the word “file” in their name, you can run the following command:

find . -name '*file*'

This command will search through the current directory and all of its subdirectories for files that have the word “file” in their name.

See also: Mastering the Linux Command Line — Your Complete Free Training Guide

If you want to find all of the files that have the word “file” at the beginning of their name, you can use the following command:

find . -name 'file*'

This command will search through the current directory and all of its subdirectories for files that have the word “file” at the beginning of their name.

Advanced options in Find command

The “find” command also allows you to use advanced search options to filter results.

  • find command with the “-type” option to search for files of a specific type.
  • find command with the “-mtime” option to search for files that have been modified in a certain amount of time.
  •  find command with the “-maxdepth” option to specify how deep you want to search into directories.

 

Find all the files in the /var/log directory that were modified in the last 7 days:

find /var/log -mtime -7

 

Find Files with Name in Linux

To find files with a specific name in Linux, you can use the find command with the -name option. Here’s the basic syntax:

find [path] -name [filename]

Where path is the directory to search, and filename is the name of the file you want to find. Here are some examples:

To find all files named index.html in the current directory and its subdirectories:

find . -name index.html

To find all files named config.json in the /etc directory and its subdirectories:

find /etc -name config.json

To find all files named file.txt in the /home directory and its subdirectories, but only show the filename and not the full path:

find /home -name file.txt -printf "%f\n"

To find all files in the current directory and its subdirectories with a name that starts with file and ends with .txt:

find . -name "file*.txt"

These are just a few examples of how to use the find command to find files with a specific name in Linux. The possibilities are almost endless, as you can use various options to refine your search based on different criteria.

CommandDescription
find . -name howtouselinux.txtFind Files Using Name in Current Directory
find /home -name howtouselinux.txtFind Files Under Home Directory
find / -type d -name howtouselinuxFind Directories Using Name
find . -type f -name “*.txt”Find all txt Files in Current Directory

Find Files with Permission in Linux

To find files with a specific permission in Linux, you can use the find command with the -perm option. Here’s the basic syntax:

find [path] -perm [permission]

Where path is the directory to search, and permission is the permission code of the file you want to find. The permission code can be specified in either octal or symbolic notation.

Here are some examples:

To find all files in the current directory and its subdirectories with 777 permissions:

find . -type f -perm 0777

To find all files in the /var directory and its subdirectories that do not have 777 permissions:

find /var -type f ! -perm 0777

To find all directories in the /home directory and its subdirectories with 755 permissions:

find /home -type d -perm 0755

 

CommandDescription
find . -type f -perm 0777 -printFind Files With 777 Permissions
find / -type f ! -perm 777Find Files Without 777 Permissions
find / -perm 2644Find SGID Files with 644 Permissions
find / -perm 1551Find Sticky Bit Files with 551 Permissions

Excluding Files and Directories in Find command

You can use the “find” command with the “-exclude” option to exclude certain files from your search.

For example, if you want to find all of the files that have the word “file” in their name, but you want to exclude all of the PDF files, you can run the following command:

find . -name 'file*' -exclude *.pdf

This command will search through the current directory and all of its subdirectories for files that have the word “file” in their name, but it will exclude all of the PDF files.

You can also use the “-exclude-dir” option to exclude certain directories from your search. For example, if you want to find all of the files that have the word “file” in their name, but you want to exclude all of the files in the “tmp” directory, you can run the following command:

find . -name 'file*' -exclude-dir tmp

This command will search through the current directory and all of its subdirectories for files that have the word “file” in their name, but it will exclude all of the files in the “tmp” directory.

Combine options together in Linux find command

You can use multiple options together with the find command to perform a more specific search. Here’s an example that combines several options:

find /home -type f -name "*.txt" -size +10M -user john -mtime -30

This command will find all files with the .txt extension that are larger than 10 megabytes, owned by the user john, and have been modified within the last 30 days, in the /home directory and its subdirectories.

Let’s break down the options used in this command:

OptionDescription
-type fSpecifies that we’re only interested in regular files (not directories, symbolic links, etc.)
-name “*.txt”Specifies that we’re looking for files with names that end with .txt
-size +10MSpecifies that we’re looking for files that are larger than 10 megabytes
-user johnSpecifies that we’re only interested in files owned by the user john
-mtime -30Specifies that we’re looking for files that have been modified within the last 30 days

By combining these options, we can perform a very specific search for files that meet our criteria. You can also use other options with the find command to further refine your search based on other criteria such as permissions, groups, and access times.

 

Find Files with User and Group in Linux

CommandDescription
find /home -user howtouselinuxFind all Files Based on User
find /home -group howtouselinuxFind all Files Based on Group

Find Files and Directories Based on Date and Time in Linux

CommandDescription
find / -mtime 50Find Last 50 Days Modified Files
find / -atime 50Find Last 50 Days Accessed Files
find / -mtime +50 –mtime -100Find Last 50-100 Days Modified Files
find / -cmin -60Find Changed Files in Last 1 Hour

Find Files and Directories Based on Size in Linux

CommandDescription
find / -size 50MFind 50MB Files
find / -size +50M -size -100MFind Size between 50MB – 100MB
find / -type f -size +100MFind larger than 100MB files
find / -type f -name *.mp3 -size +10MFind all .mp3 files with more than 10MB

Find Files with Not operator in Linux

CommandDescription
find . -type f -not -name “*.html”Find files not ending with the .html file extension
find . -type f ! -name “*.html”Find files not ending with the .html file extension

Related:

David Cao
David Cao

David is a Cloud & DevOps Enthusiast. He has years of experience as a Linux engineer. He had working experience in AMD, EMC. He likes Linux, Python, bash, and more. He is a technical blogger and a Software Engineer. He enjoys sharing his learning and contributing to open-source.

Articles: 275

Leave a Reply

Your email address will not be published. Required fields are marked *