Handling large numbers of files is routine for Linux users, and that’s where the find
command shines. It’s a dynamic tool that helps you search for files and directories based on name, type, modification date, size, permissions, and even content. Whether conducting audits, cleaning up old files, or troubleshooting, find
ensures you locate exactly what you need, quickly and efficiently.
Command Syntax
find [location] [options] [expression]
- location: Starting path for the search (e.g.,
/home/documents
) - options: Filters for file type, name, size, permissions, etc.
- expression: The pattern or property to match
Most Useful Options
Option | Purpose | Example |
---|---|---|
-name | Case-sensitive name search | find ~ -name “notes.txt” |
-iname | Case-insensitive name search | find ~ -iname “notes.*” |
-type | Restrict search to files (-f) or directories (-d) | find /var/log -type f |
-size | Find files by size (e.g., +10M for over 10MB) | find /tmp -size +100M |
-mtime | Search by last modified time (in days; -7 for past week) | find . -mtime -7 |
-perm | Filter by permission bits | find /etc -perm 755 |
-exec | Run another command on each match | find . -name “*.bak” -exec rm {} ; |
-empty | Locate empty files or directories | find ~/backups -empty |
-maxdepth | Limit how deep find searches | find . -maxdepth 2 -type d |
Practical Examples
1. Search for an Exact File Name
To find a file named budget.xlsx
anywhere under /projects
:
find /projects -name "budget.xlsx"
2. Search with a Partial Name or Pattern
Need any .pdf
file in your Downloads?
find ~/Downloads -name "*.pdf"
3. Case-Insensitive Search
Not sure about the casing? Use -iname
:
find /srv -iname "README*"
4. Limit Results by Size
Looking for log files larger than 50MB?
find /var/log -type f -size +50M
5. Search Files Modified in the Last Day
To find documents changed in the last 24 hours:
find ~/work -type f -mtime -1
6. Find and Delete Temporary Files
Remove .cache
files under /tmp
with a single command:
sudo find /tmp -type f -name "*.cache" -exec rm {} \;
7. List Only Directories
Generate a tree of folders within your Git repository:
find ~/git/myapp -type d
8. Find Empty Folders
Declutter unused empty folders from your Notes project:
find ~/notes -type d -empty
9. Search Files by Permission
Show all files with 600 permissions for security review:
find /etc -type f -perm 600
10. Search and Grep Content
Find all .conf
files containing the word “server”:
find /etc -name "*.conf" -exec grep -l "server" {} \;
How find Works
The find
command processes each directory and subdirectory from the specified location in real time. Unlike locate
, which relies on a database, find
actively checks all files right at search time, ensuring results always reflect the current state of your filesystem. You can combine expressions for advanced precision, and even execute actions instantly on found matches, such as copying, deleting, or changing permissions.
Why find Is Essential
With options for filtering by type, name, permissions, modification date, and actions, find
is a powerhouse for system maintenance, bulk operations, security checks, and development workflows. Its flexibility saves time and reduces manual effort, making it an indispensable skill for every Linux user.
Read More: The shell