How to find the most recent file in a directory on Linux?

The Linux find command is one of the most widely used utilities that allows us to traverse a file hierarchy. It is primarily used to locate specific files or directories, and we can combine it with other Linux commands or flags to perform complex operations.

Let's explore a basic example of the find command to understand how it works.

In the example below, I am searching for a file named sample.sh using the find command:

find sample.sh

Output

sample.sh

Notice that if the find command locates the file, it prints the filename. If the file is not found, no output is displayed and the terminal process terminates.

Finding the Most Recent File

Now let's explore how to use the find command to locate the most recently modified file in a directory. Consider a directory named dir1 that contains the following files:

immukul@192 dir1 % ls -ltr
total 5232
-rwxrwxrwx 1 immukul staff  446966 Sep 23 1998 wget-1.5.3.tar.gz
drwxrwxrwx 3 immukul staff      96 Jul  7 17:42 d1
-rwxrwxrwx 1 root    staff     106 Jul  8 13:10 sample2.sh
-rwxrwxrwx 1 root    staff     946 Jul 12 18:45 sample.sh
-rwxrwxrwx 1 root    staff     718 Jul 12 18:48 sample1.sh
drwxr-xr-x 2 immukul staff      64 Jul 13 11:36 dr1
drwxr-xr-x 3 immukul staff      96 Jul 13 11:36 dr2
-rw-r--r-- 1 immukul staff     661 Jul 14 09:00 newZip.zip
-rw-r--r-- 1 immukul staff 2201512 Jul 14 09:19 zipContent.zip
-rwxrwxrwx 1 immukul staff      24 Jul 14 15:52 sss.sh
-rw-r--r-- 1 immukul staff     122 Jul 14 16:10 somefile.txt
-rw-r--r-- 1 immukul staff       0 Jul 15 09:44 sample 1.txt
drwxrwxrwx 4 immukul staff     128 Jul 15 10:27 d2

While we could manually compare timestamps for a small number of files, this approach becomes impractical with large directories containing hundreds or thousands of files.

Methods to Find Most Recent File

Method 1: Using Find Command

For macOS:

find . -type f -exec stat -lt "%Y-%m-%d" {} \+ | cut -d' ' -f6- | sort -n | tail -1

For Linux-based OS:

find . -type f -printf "%T@ %p<br>" | sort -n | cut -d' ' -f 2- | tail -n 1

Output

2021-07-15 ./sample 1.txt

Method 2: Using ls Command

An alternative and simpler approach is to use the ls command with specific flags:

ls -Art | tail -n 1

Output

sample 1.txt

Command Breakdown

Command Component Purpose
find . -type f Find all files in current directory
-printf "%T@ %p
"
Print timestamp and filepath
sort -n Sort numerically by timestamp
tail -n 1 Get the last (most recent) entry
ls -Art List all files, sorted by time (reverse)

Key Points

  • The find command method works recursively through subdirectories

  • The ls command method is simpler but only works in the current directory

  • Different operating systems may require different stat command syntax

  • The -printf option is GNU-specific and may not work on all Unix systems

Conclusion

Finding the most recent file in a Linux directory can be accomplished using either the find command for comprehensive searches or the ls command for quick directory-level queries. The find method offers more flexibility for complex scenarios, while ls provides a simpler solution for basic needs.

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

3K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements