Table of Contents
2. Filter by File Type, Size, and Modification Time
By File Type
By Size
By Modification Time
3. Execute Commands on Found Files with -exec
Delete Files Safely
Change Permissions or Ownership
Preview Before Running
4. Combine Conditions with AND, OR, NOT
5. Optimize and Avoid Common Pitfalls
Bonus: Real-World Pro Examples
Home System Tutorial LINUX How to Use the `find` Command in Linux Like a Pro

How to Use the `find` Command in Linux Like a Pro

Aug 20, 2025 pm 07:06 PM

Use -name for case-sensitive and -iname for case-insensitive file searches. 2. Filter by type with -type (f, d, l), by size with -size ( 100M, -50K), and by modification time with -mtime (-7, 30) or -mmin. 3. Execute actions on found files using -exec with {} \; or {} for efficiency, and test with echo first. 4. Combine conditions using AND (implied), OR (-o), NOT (! or -not), and parentheses \( \) for grouping. 5. Optimize by avoiding permission errors (2>/dev/null), limiting depth with -maxdepth, and starting searches in specific directories. Real-world examples include compressing old logs, finding large directories, deleting empty files, and detecting SUID files for security, all demonstrating how mastering find enhances efficiency and control in Linux environments.

How to Use the `find` Command in Linux Like a Pro

The find command in Linux is one of the most powerful tools for searching and managing files directly from the terminal. While basic usage is simple, mastering find unlocks advanced file operations that save time and boost productivity. Here’s how to use find like a pro — going beyond basic searches to real-world, efficient workflows.

How to Use the `find` Command in Linux Like a Pro

1. Search Files by Name (Case-Sensitive and Case-Insensitive)

The most common use of find is locating files by name.

find /path/to/search -name "filename.txt"

This searches for files named exactly filename.txt. The search is case-sensitive.

How to Use the `find` Command in Linux Like a Pro

For a case-insensitive search, use -iname:

find /home -iname "*.txt"

This finds all .txt files under /home, regardless of whether they’re .TXT, .Txt, etc.

How to Use the `find` Command in Linux Like a Pro

? Tip: Always quote patterns with wildcards (*, ?) to prevent the shell from expanding them prematurely.


2. Filter by File Type, Size, and Modification Time

Pro users combine filters to narrow results precisely.

By File Type

Use -type to specify what kind of file you're looking for:

  • f = regular file
  • d = directory
  • l = symbolic link
find /var/log -type f -name "*.log"

Finds only regular files ending in .log.

By Size

Search files based on size using -size:

  • 100M → larger than 100 megabytes
  • -50K → smaller than 50 kilobytes
  • 1G → exactly 1 gigabyte (rarely used)
find ~ -type f -size  1G

Finds all files in your home directory bigger than 1GB.

By Modification Time

Use -mtime to find files modified n days ago:

  • -mtime -7 → changed in the last 7 days
  • -mtime 30 → unchanged for more than 30 days
find /var/log -type f -name "*.log" -mtime  30

Finds log files older than 30 days — useful for cleanup.

You can also use -mmin for minutes (great for monitoring recent changes):

find . -type f -mmin -5

Finds files modified in the last 5 minutes in the current directory.


3. Execute Commands on Found Files with -exec

One of find's superpowers is running actions on matched files using -exec.

Delete Files Safely

Instead of risky rm *.log (which can fail with too many files), use:

find /tmp -name "*.tmp" -type f -exec rm -f {} \;
  • {} is a placeholder for each found file.
  • \; ends the command (runs once per file).

For better performance with many files, use instead of \;:

find /tmp -name "*.tmp" -type f -exec rm -f {}  

This passes multiple files to a single rm call — faster and safer.

Change Permissions or Ownership

Fix permissions on config files:

find /home -name "*.conf" -type f -exec chmod 644 {} \;

Or change ownership:

find /opt/apps -type d -name "logs" -exec chown admin:admin {} \;

Preview Before Running

Always test first! Replace the action with echo:

find . -name "*.bak" -exec echo "Would delete: {}" \;

This shows what would be affected before making changes.


4. Combine Conditions with AND, OR, NOT

find supports logical operators to build complex queries.

  • AND is implied when chaining expressions:

    find /tmp -type f -name "*.tmp" -mtime  7

    Means: regular file AND name ends in .tmp AND modified over 7 days ago.

  • OR uses -o:

    find . -name "*.txt" -o -name "*.log"

    Finds .txt OR .log files.

  • NOT uses -not or ! (escape ! in some shells):

    find . -type f ! -name "*.pdf"

    All files that are not PDFs.

? Use parentheses to group conditions. Escape them with \ or quote:

find . \( -name "*.txt" -o -name "*.md" \) -mtime -7

Finds .txt or .md files modified in the last 7 days.


5. Optimize and Avoid Common Pitfalls

Even pros make mistakes. Here’s how to stay sharp:

  • Avoid permission noise: Redirect errors when searching system dirs:

    find / -name "secret.conf" 2>/dev/null

    Suppresses "Permission denied" spam.

  • Start specific: Don’t search from / unless necessary. Narrow the path:

    find ~/Documents -name "*.odt"
  • Use -maxdepth to limit recursion:

    find /etc -maxdepth 2 -name "*.conf"

    Only searches /etc and immediate subdirectories.

  • Don’t parse ls output: find outputs clean paths — perfect for scripting.


Bonus: Real-World Pro Examples

Here are some practical one-liners you’ll actually use:

  • Find and compress old logs:

    find /var/log -name "*.log" -mtime  30 -exec gzip {} \;
  • Locate large directories:

    find /home -type d -exec du -sh {} \; | sort -hr | head -10
  • Find empty files and delete them:

    find . -type f -empty -delete
  • Find files with SUID bit set (security check):

    find / -type f -perm /4000 2>/dev/null

    Mastering find isn’t about memorizing every option — it’s about understanding how to chain conditions and actions to solve real problems efficiently. Once you’re comfortable combining name, type, time, size, and -exec, you’ll wonder how you ever managed without it.

    Basically, start small, test often, and build up. The command looks cryptic at first, but soon becomes second nature.

    The above is the detailed content of How to Use the `find` Command in Linux Like a Pro. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undress AI Tool

Undress AI Tool

Undress images for free

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

PHP Tutorial
1600
276
How to install software on Linux using the terminal? How to install software on Linux using the terminal? Aug 02, 2025 pm 12:58 PM

There are three main ways to install software on Linux: 1. Use a package manager, such as apt, dnf or pacman, and then execute the install command after updating the source, such as sudoaptininstallcurl; 2. For .deb or .rpm files, use dpkg or rpm commands to install, and repair dependencies when needed; 3. Use snap or flatpak to install applications across platforms, such as sudosnapinstall software name, which is suitable for users who are pursuing version updates. It is recommended to use the system's own package manager for better compatibility and performance.

How to Schedule Tasks on Linux with Cron and anacron How to Schedule Tasks on Linux with Cron and anacron Aug 01, 2025 am 06:11 AM

cronisusedforpreciseschedulingonalways-onsystems,whileanacronensuresperiodictasksrunonsystemsthataren'tcontinuouslypowered,suchaslaptops;1.Usecronforexacttiming(e.g.,3AMdaily)viacrontab-ewithsyntaxMINHOURDOMMONDOWCOMMAND;2.Useanacronfordaily,weekly,o

The Ultimate Guide to High-Performance Gaming on Linux The Ultimate Guide to High-Performance Gaming on Linux Aug 03, 2025 am 05:51 AM

ChoosePop!_OS,Ubuntu,NobaraLinux,orArchLinuxforoptimalgamingperformancewithminimaloverhead.2.InstallofficialNVIDIAproprietarydriversforNVIDIAGPUs,ensureup-to-dateMesaandkernelversionsforAMDandIntelGPUs.3.EnabletheperformanceCPUgovernor,usealow-latenc

What are the main pros and cons of Linux vs. Windows? What are the main pros and cons of Linux vs. Windows? Aug 03, 2025 am 02:56 AM

Linux is suitable for old hardware, has high security and is customizable, but has weak software compatibility; Windows software is rich and easy to use, but has high resource utilization. 1. In terms of performance, Linux is lightweight and efficient, suitable for old devices; Windows has high hardware requirements. 2. In terms of software, Windows has wider compatibility, especially professional tools and games; Linux needs to use tools to run some software. 3. In terms of security, Linux permission management is stricter and updates are convenient; although Windows is protected, it is still vulnerable to attacks. 4. In terms of difficulty of use, the Linux learning curve is steep; Windows operation is intuitive. Choose according to requirements: choose Linux with performance and security, and choose Windows with compatibility and ease of use.

The Importance of Time Synchronization on Linux with NTP The Importance of Time Synchronization on Linux with NTP Aug 01, 2025 am 06:00 AM

Timesynchronizationiscrucialforsystemreliabilityandsecuritybecauseinconsistenttimecauseslogconfusion,securityfailures,misfiredscheduledtasks,anddistributedsystemerrors;1.CheckNTPstatususingtimedatectlstatustoconfirmsynchronizationandserviceactivity;2

Understanding RAID Configurations on a Linux Server Understanding RAID Configurations on a Linux Server Aug 05, 2025 am 11:50 AM

RAIDimprovesstorageperformanceandreliabilityonLinuxserversthroughvariousconfigurations;RAID0offersspeedbutnoredundancy;RAID1providesmirroringforcriticaldatawith50�pacityloss;RAID5supportssingle-drivefailuretoleranceusingparityandrequiresatleastthre

Linux how to enable and disable services at boot Linux how to enable and disable services at boot Aug 08, 2025 am 10:23 AM

To manage the startup of Linux services, use the systemctl command. 1. Check the service status: systemctlstatus can check whether the service is running, enabled or disabled. 2. Enable the service startup: sudosystemctlenable, such as sudosystemctlenablenginx. If it is started at the same time, use sudosystemctlenable--nownginx. 3. Disable the service startup: sudosystemctldisable, such as sudosystemctldisablecups. If it is stopped at the same time, use sudosystemctldisabl

Setting up a Development Environment on Linux for Python Setting up a Development Environment on Linux for Python Aug 03, 2025 am 12:26 AM

InstallPythonandessentialtoolsusingyourdistribution’spackagemanager,ensuringpython3-venvandpython3-devareincludedforenvironmentisolationandCextensions.2.Alwaysusevirtualenvironmentsbyrunningpython3-mvenvmyproject_envandactivatewithsourcemyproject_env

See all articles