Close Menu
Linux All DayLinux All Day
    Facebook Bluesky Mastodon X (Twitter)
    Linux All DayLinux All Day
    • News
    • Operating Systems
      • Linux Distributions
      • Android-based OS
      • ChromeOS Alternatives
    • Software
      • Apps & Tools
      • Desktop Environments
      • Installation & Management
    • Tutorials
      • Linux Basic & Tips
      • System Optimization
      • Security & Privacy
    • Linux Gaming
      • Game News & Reviews
      • Emulators & Retro
      • Performance & Benchmarks
    • Comparisons
    Mastodon Bluesky Facebook
    Linux All DayLinux All Day
    Home - Tutorials - Linux Basic & Tips - The Essential Linux Trick: How to Use the linux find command for File Searching

    The Essential Linux Trick: How to Use the linux find command for File Searching

    By David - DistroDrifter Linux Basic & Tips October 27, 20259 Mins Read
    Share Facebook Bluesky Twitter Threads Reddit LinkedIn Telegram Tumblr Email Copy Link Pinterest
    Follow Us
    Facebook Mastodon Bluesky X (Twitter)
    A guide showing the essential 'linux find command' being used for terminal file search.
    Share
    Facebook Twitter Bluesky Reddit Threads Tumblr Email Copy Link

    Navigating the Linux file system can sometimes feel like searching for a needle in a digital haystack, especially when you’re working within the terminal. While graphical file managers offer search bars, they are often slow and lack precision. This is where a fundamental utility, the linux find command, becomes an indispensable tool for every user, from beginner to expert.

    The find command is a powerful and versatile utility that recursively searches for files and directories in a given path based on a wide array of criteria. It might seem intimidating at first, but mastering just a few of its options can dramatically boost your productivity. In this guide, we’ll break down how to use the linux find command, starting from the absolute basics and moving to practical, advanced find command tips that will make your terminal file search fast and efficient.

    What is the linux find command?

    At its core, the find command scans through one or more directory trees, looking for files that match a set of specified expressions. Unlike simpler commands like ls (which lists files) or grep (which searches inside files), find is designed specifically to locate the files themselves.

    The basic syntax is straightforward:

    Bash

    find [path(s)] [expression(s)]
    
    • [path(s)]: This is the starting directory (or directories) where find will begin its search. You can use . to signify the current directory, / for the entire system, or a specific path like /home/username/Documents.
    • [expression(s)]: These are the tests or conditions that a file must meet to be included in the results. This is where the real power lies. Expressions can include criteria like name, type, size, modification time, and permissions.

    Let’s dive into practical examples.

    Getting Started: Basic File and Directory Searching

    The most common use for find is to locate a file by its name.

     

    Finding a File by Name

    To find a file named report.pdf in your current directory and all its subdirectories, you would use:

    Bash

    find . -name "report.pdf"
    
    • find .: Start searching from the current directory (.).
    • -name "report.pdf": Look for files with the exact name “report.pdf”.

     

    Case-Insensitive Search

    What if you don’t remember if the file was report.pdf, Report.pdf, or REPORT.PDF? You can use the -iname expression (insensitive-name) for a case-insensitive search:

    Bash

    find . -iname "report.pdf"
    

    This will find all variations of the name.

     

    Finding by Type: Files vs. Directories

    Sometimes you’re not just looking for a file, but a directory. The find command can easily distinguish between different file types using the -type expression.

    • f: Regular file
    • d: Directory
    • l: Symbolic link

    To find only directories named “Projects”:

    Bash

    find /home -type d -name "Projects"
    

    To find only files that end with the .log extension in your /var/log directory:

    Bash

    find /var/log -type f -name "*.log"
    

    The asterisk * is a wildcard that matches any sequence of characters. So, *.log matches syslog.log, auth.log, and any other file ending in .log.

    Mastering Your terminal file search

    To make your terminal file search more effective, you can control where and how deep the find command looks.

    Searching Multiple Locations

    You aren’t limited to a single starting path. You can provide multiple directories to search simultaneously:

    Bash

    find /home/username/Documents /opt/backups -type f -name "*.conf"
    

    This command will search for .conf files in both your Documents folder and the /opt/backups directory.

     

    Controlling Search Depth

    By default, find searches recursively through all subdirectories, which can be time-consuming in large folders. You can limit this behavior with -maxdepth and -mindepth.

    To search only in the current directory (no subdirectories), use -maxdepth 1:

    Bash

    find . -maxdepth 1 -type f -name "*.txt"
    

    To search the current directory and its immediate subdirectories (but no deeper), use -maxdepth 2:

    Bash

    find . -maxdepth 2 -type d -name "assets"
    

    This is incredibly useful for preventing find from getting lost in deep, complex directory structures.

    Advanced find command tips

    Now that you have the basics, let’s explore the more advanced find command tips that truly showcase the command’s power.

    Finding Files by Time

    One of the most practical features is finding files based on when they were last accessed, modified, or changed.

    • -mtime (Modification Time): The file’s content was last modified.
    • -atime (Access Time): The file was last read or accessed.
    • -ctime (Change Time): The file’s metadata (like permissions or owner) was last changed.

    You typically use these with a number to represent days:

    • -mtime -7: Files modified less than 7 days ago (within the last week).
    • -mtime +30: Files modified more than 30 days ago.
    • -mtime 1: Files modified exactly 1 day ago (between 24 and 48 hours ago).

    Example: Find all log files in /var/log modified in the last 24 hours (less than 1 day):

    Bash

    find /var/log -type f -name "*.log" -mtime -1
    

    You can also get more granular by using minutes:

    • -mmin (Modification Time in minutes)
    • -amin (Access Time in minutes)

    Example: Find all configuration files in /etc modified in the last 60 minutes:

    Bash

    find /etc -type f -name "*.conf" -mmin -60
    

    Finding Files by Size

    Cleaning up disk space? The -size expression is your best friend. You can specify size in blocks, or more intuitively, using suffixes:

    • c: bytes
    • k: Kilobytes
    • M: Megabytes
    • G: Gigabytes

    Similar to time, you use + (greater than) and - (less than).

    Example: Find all files in your home directory larger than 100 Megabytes:

    Bash

    find ~ -type f -size +100M
    

    Example: Find all files in /tmp that are smaller than 10 Kilobytes:

    Bash

    find /tmp -type f -size -10k
    

    Example: Find all empty files in the current directory:

    Bash

    find . -type f -empty
    

    Finding Files by Owner and Permissions

    This is a critical tool for system administration and security.

    • -user [username]: Find files owned by a specific user.
    • -group [groupname]: Find files owned by a specific group.

    Example: Find all files in /srv/www owned by the user www-data:

    Bash

    find /srv/www -user www-data
    

    You can also find files by their permissions using -perm:

    Example: Find all files that have “world-writable” permissions (a potential security risk):

    Bash

    find / -perm /o=w
    

    Example: Find all executable script files (.sh) that don’t have execute permissions set:

    Bash

    find . -type f -name "*.sh" -not -perm /a=x
    

    The Power of -exec: Taking Action on Found Files

    The find command doesn’t just find files; it can also act on them using the -exec expression. This is where you must be careful, but it is also where find is most powerful.

    The syntax for -exec looks like this:

    Bash

    find [path] [expressions] -exec [command] {} \;
    
    • [command]: The command you want to run (e.g., rm, chmod, cp).
    • {}: A placeholder that is replaced with the full path of each file found.
    • \;: A terminator that tells find the command has ended. It must be escaped with a backslash.

    Example: Find all .bak files and delete them one by one:

    Bash

    find . -type f -name "*.bak" -exec rm {} \;
    

    A More Efficient -exec:

    The \; terminator runs the command for every single file. If you find 10,000 files, it runs rm 10,000 times. A more efficient method is to use + instead:

    Bash

    find . -type f -name "*.bak" -exec rm {} +
    

    This groups the found files into a single list and runs the rm command only once, which is much faster.

    Safer Alternatives: -ok and -delete

    Because -exec rm is so dangerous (a typo could wipe your system), find has safer alternatives.

    1. The -ok Action:

    This works just like -exec, but it prompts you for confirmation (y/n) before performing the action on each file.

    Bash

    find . -type f -name "*.tmp" -ok rm {} \;
    

    2. The -delete Action:

    This is the modern, preferred way to delete files found with find. It’s a built-in action that is safer and more efficient than using -exec rm.

    Bash

    find . -type f -name "*.tmp" -delete
    

    This will find and delete all files ending in .tmp in the current directory tree.

    Combining Expressions for Precise Results

    You can combine expressions using logical operators:

    • -and (or just list them, as it’s the default)
    • -or (or -o)
    • -not (or !)

    Example (OR): Find all files that are either JPEGs or PNGs:

    Bash

    find . -type f \( -name "*.jpg" -o -name "*.png" \)
    

    (Note: The parentheses are often needed to group the logic correctly.)

    Example (NOT): Find all files in your home directory, except for those in your .cache directory:

    Bash

    find ~ -type f -not -path "*/.cache/*" -name "settings.json"
    

    This is an extremely useful command for excluding “noisy” directories from your search results.

    Conclusion

    The linux find command is one of the most powerful and fundamental tools in your command-line arsenal. While we’ve only scratched the surface, mastering these core expressions—searching by name (-name, -iname), type (-type), time (-mtime, -mmin), size (-size), and taking action (-exec, -delete)—will transform your terminal file search from a chore into a fast, precise operation.

    Practice these commands, explore their man pages GNU FINDUTILS OFFICIAL DOCUMENTATION, and soon you’ll wonder how you ever managed your files without them. For more practical examples, resources like A PRACTICAL GUIDE ON TECMINT or LINUXIZE FIND COMMAND TUTORIAL. can also be very helpful.

    ⚠️ A Quick Word of Warning

    Always be extremely careful when using the -exec or -delete actions. A mistake with find ... -delete or find ... -exec rm {} + can permanently delete critical system files. When in doubt, always run your find command without the action first to see what files it matches. You can also pipe the output to a file or use the -ok action for confirmation. Use these powerful options at your own risk.


    💬 Join the Discussion

    What are your favorite find command tips? Do you have a complex find command you’re particularly proud of, or a time it saved the day? Share your experiences and questions in the comments below!

    Follow on Mastodon Follow on Bluesky
    Share. Facebook Twitter Bluesky Reddit Threads Telegram Email Copy Link

    Related post

    Did You Know? 5 Technical Linux Facts Most Professionals Miss

    December 7, 2025

    How to Install Visual Studio Code on Chrome OS Flex: The Official Engineering Method

    December 3, 2025

    How to Enable Linux Apps on Chrome OS Flex

    December 3, 2025
    Leave A Reply Cancel Reply

    → Switch to Linux Today
    • Facebook
    • Twitter
    • Mastodon
    • Bluesky
    More From Linuxallday
    Beyond the Grid: Mastering the Zen Flow of Bryce Tiles
    Mozilla Confirms Full “AI Kill Switch” for Firefox, Arriving in Early 2026
    Rescuezilla Review 2025: The ‘Undo Button’ for Your Entire PC
    Tails OS Review 2025: The Ultimate Amnesic System for Total Privacy
    Facebook X (Twitter) Mastodon Bluesky Threads RSS
    • About Us
    • Cookie Policy
    • Terms & Conditions
    • Privacy Policy
    • Disclosure & Disclaimer
    • Contact
    • Our Authors
    • Cookie Policy (EU)
    © 2026 Designed by FeedCrux

    Type above and press Enter to search. Press Esc to cancel.

    Manage Consent
    To provide the best experiences, we use technologies like cookies to store and/or access device information. Consenting to these technologies will allow us to process data such as browsing behavior or unique IDs on this site. Not consenting or withdrawing consent, may adversely affect certain features and functions.
    Functional Always active
    The technical storage or access is strictly necessary for the legitimate purpose of enabling the use of a specific service explicitly requested by the subscriber or user, or for the sole purpose of carrying out the transmission of a communication over an electronic communications network.
    Preferences
    The technical storage or access is necessary for the legitimate purpose of storing preferences that are not requested by the subscriber or user.
    Statistics
    The technical storage or access that is used exclusively for statistical purposes. The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
    Marketing
    The technical storage or access is required to create user profiles to send advertising, or to track the user on a website or across several websites for similar marketing purposes.
    • Manage options
    • Manage services
    • Manage {vendor_count} vendors
    • Read more about these purposes
    View preferences
    • {title}
    • {title}
    • {title}