find
Overview
The find command is used to search for files and directories in a directory hierarchy based on various criteria such as name, size, type, and permissions.
Syntax
find [path...] [expression]Common Options
| Option | Description |
|---|---|
-name pattern |
Search for files by name |
-type f/d |
Search by type (f=file, d=directory) |
-size n[cwbkMG] |
Search by size |
-mtime n |
Search by modification time |
-user name |
Search by owner |
-perm mode |
Search by permissions |
-exec command {} \; |
Execute command on found files |
-maxdepth levels |
Limit search depth |
Key Use Cases
- Locate files by name or pattern
- Find and delete old files
- Search for files by size or date
- Execute commands on found files
- Find files with specific permissions
Examples with Explanations
Example 1: Find files by name
find /home -name "*.txt"Finds all .txt files in /home directory and subdirectories
Example 2: Find and delete old files
find /tmp -type f -mtime +30 -deleteFinds and deletes files older than 30 days in /tmp
Example 3: Find large files
find / -type f -size +100MFinds files larger than 100 megabytes
Understanding Output
- Default output shows full path of found files
- Can be modified with
-printffor custom formats - Error messages for inaccessible directories
- Results can be sorted or filtered with other commands
Common Usage Patterns
Find and execute:
find . -name "*.log" -exec grep "error" {} \;Find recent files:
find . -type f -mtime -7Find empty files/directories:
find . -type f -empty
Performance Analysis
- Use
-maxdepthto limit directory traversal - Combine with
-pruneto skip directories - Use
-xdevto stay on one filesystem - Consider using
locatefor faster name-based searches