How to Find Files in Linux With the Find Command?

The find command is one of the most powerful and essential tools in Linux for locating files and directories within the filesystem. Unlike simple search utilities, the find command allows you to search based on various criteria such as file name, size, permissions, modification time, and even content. It recursively searches through directory hierarchies, making it invaluable for system administration and file management tasks.

The find command works by traversing directories starting from a specified path and evaluating each file and directory against the given search criteria. Its flexibility lies in its ability to combine multiple search conditions and perform actions on the found files.

Basic Syntax

The fundamental syntax of the find command follows this structure:

find [starting_directory] [options] [expression]
  • starting_directory The path where the search begins (use / for system-wide search)

  • options Additional parameters to refine the search behavior

  • expression Conditions that specify what to find

Searching by Name and Extension

The most common use case is finding files by their names or extensions using the -name option:

# Find a specific file
find /home/user -name "example.txt"

# Find files with specific extension
find /var/log -name "*.log"

# Case-insensitive search
find /home -iname "*.PDF"

Wildcards like * and ? can be used for pattern matching, but they must be enclosed in quotes to prevent shell expansion.

Searching by Size and Date

Find files based on their size using the -size option with units like c (bytes), k (kilobytes), M (megabytes), or G (gigabytes):

# Files larger than 100MB
find /home/user -size +100M

# Files smaller than 1KB
find /tmp -size -1k

# Files exactly 50MB
find /var -size 50M

Search by modification time using -mtime (days), -mmin (minutes), or access time with -atime:

# Files modified in last 7 days
find /var/log -mtime -7

# Files not accessed in 30 days
find /home -atime +30

Advanced Search Criteria

Permissions and Ownership

Search for files based on their permissions using octal notation:

# Files with specific permissions (rw-rw----)
find /home -perm 660

# Files writable by group
find /var -perm -020

# Find files owned by specific user
find / -user jdoe

# Find files owned by specific group
find /var -group admin

File Types

Use the -type option to search for specific file types:

# Regular files only
find /etc -type f

# Directories only
find /home -type d

# Symbolic links
find /usr -type l

# Block devices
find /dev -type b

Content-Based Search

Combine find with grep to search file contents:

# Find files containing specific text
find /home -type f -exec grep -l "configuration" {} \;

# Search for text in specific file types
find /var/log -name "*.log" -exec grep "error" {} +

Filtering and Excluding Results

Exclude certain directories using the -prune option:

# Exclude specific directory from search
find /home -path /home/user/cache -prune -o -name "*.txt" -print

# Exclude multiple directories
find / -path /proc -prune -o -path /sys -prune -o -name "config" -print

Combine find results with other commands using pipes:

# Filter results with grep
find /var/log -name "*.log" | grep -v "sample"

# Count found files
find /home -name "*.txt" | wc -l

# Sort results by size
find /tmp -type f -exec ls -lh {} + | sort -k5 -h

Practical Examples

Task Command
Find empty files find /tmp -type f -empty
Find duplicate filenames find / -name "filename" 2>/dev/null
Find SUID files find / -perm -4000 -type f
Find world-writable files find / -perm -002 -type f

Performance Tips

  • Use specific starting directories instead of / to reduce search time

  • Place faster conditions (like -name) before slower ones (like -exec)

  • Use -maxdepth to limit recursion depth when appropriate

  • Redirect error messages with 2>/dev/null for cleaner output

Conclusion

The find command is an indispensable tool for Linux file management, offering extensive search capabilities beyond simple name matching. By mastering its various options for searching by size, date, permissions, and content, you can efficiently locate files across complex directory structures. Combined with other Linux utilities through pipes and execution options, find becomes a powerful component of system administration workflows.

Updated on: 2026-03-17T09:01:38+05:30

631 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements