DEV Community

Cover image for Unveiling Linux Command's - find
Syam SV
Syam SV

Posted on

Unveiling Linux Command's - find

Searching for files on your Linux system can sometimes feel like searching for a needle in a haystack. The find command is here to make your file-finding tasks easy. In this post, we'll walk you through various scenarios where the find command becomes very useful.

Finding files by name

Ever found yourself hunting for a file but forgetting where you stashed it? The find command can help you pinpoint it. When you're in your terminal, type

find /path/to/search -name "filename"
Enter fullscreen mode Exit fullscreen mode

Just replace /path/to/search with your starting directory and filename with the elusive file's name.

Finding files by size

Sometimes you're dealing with large files, and sometimes it's the tiny ones causing a stir. find can help with that too! To locate files based on their size, use

find /path/to/search -size +size_unit
Enter fullscreen mode Exit fullscreen mode

Replace/path/to/search with your directory and size_unit with the size you're after (like 10M for 10 megabytes). To find small files, use - instead of +.

Finding files by user

Who's the owner of that file? find can answer that. To discover files owned by a specific user or group

find /path/to/search -user username
Enter fullscreen mode Exit fullscreen mode

Replace /path/to/search with your directory and username with the owner's name. Similar to the user scenario, you can also use -group groupname to find files owned by a particular group.

Finding files by permission

Permissions can be quite the puzzle. But findcan help you unravel it. To identify files with specific permissions, type:

find /path/to/search -perm permissions
Enter fullscreen mode Exit fullscreen mode

Here, /path/to/search is your directory, and permissions are the numeric values (like 755 for read, write, and execute). If you want files with any of the specified permission bits, use -perm /permissions.

Finding files by date and time

The find command help you to navigate through time and locate files based on their access, modification, or change times.

find /path/to/search -atime/-ctime/-mtime +/-time_unit
Enter fullscreen mode Exit fullscreen mode

Replace /path/to/search with your directory, pick atime, ctime, or mtime, and adjust +/-time_unit to specify the time frame.

Following are some example cases to understand

Find Recently Modified Files in the a directory

Imagine you've made some recent changes to your system configuration files in a directory, and you want to identify files that have been modified within the last 10 minutes

find /path/to/search  -mmin -10
Enter fullscreen mode Exit fullscreen mode

This command will provide you with a list of files in the /etc directory that have been modified within the last 10 minutes.

Locate Recently Changed files

To find files that have been changed within the last 2 days across multiple important directories, use this find command

find /usr/bin /usr/sbin -ctime -2
Enter fullscreen mode Exit fullscreen mode

By executing this command, you'll obtain a list of files that have undergone changes in the specified time frame.

Identify Unused Files in Web Directories

When managing websites, it's important to keep track of files that haven't been accessed for a while. For instance, let's say you want to find files in the /var/www directory that haven't been accessed for over 300 days. Here's the find command to achieve that:

find /var/www -atime +300
Enter fullscreen mode Exit fullscreen mode

Upon executing this command, you'll receive a list of files within the specified directories that meet the time-based criteria.

Finding files and executing commands

The find command is not just about discovering files; it's also about taking action on them. This is where the -exec flag comes into play. With it, you can execute a command on each file that matches your search criteria.

find /path/to/search -name "filename" -exec command {} \;
Enter fullscreen mode Exit fullscreen mode

For example, find text files and print their contents

find /home/user/documents -name "*.txt" -exec cat {} \;
Enter fullscreen mode Exit fullscreen mode

Interactively Approve Actions

Sometimes, before making changes to files, you want to be sure. The -ok flag in find enables an interactive mode that asks for your confirmation before executing a command on each file.

find /path/to/search -name "filename" -ok command {} \;
Enter fullscreen mode Exit fullscreen mode

For example safely deleting files

find /home/user/trash_files -name "*~" -ok rm {} \;
Enter fullscreen mode Exit fullscreen mode

With these scenarios, find becomes a tool not only for locating files but also for performing actions on them, whether you're printing file contents or confirming deletions. It adds a layer of efficiency and control to your file management tasks

Top comments (0)