Blog / Linux/ Advanced Linux ls Command Guide: Sorting by Time and Finding Latest Files

Advanced Linux ls Command Guide: Sorting by Time and Finding Latest Files

Linux ls 命令进阶指南:按时间排序与查找最新文件

Advanced Guide to the Linux ls Command: Sorting by Time and Finding the Latest Files

The ls command is one of the most fundamental and frequently used commands in Linux, designed to list directory contents. Beyond simple file listings, combining different options enables powerful file filtering and sorting. This guide focuses on sorting files by time and quickly identifying the newest or oldest files.

Sorting Files by Time and Filtering

Use the -t option to sort files by modification time (mtime), newest first. Combined with pipes and commands like head and tail, you can easily filter a specific number of the latest or oldest files.

Example 1: List the 3 newest PHP files

ls -t *.php | head -3
  • -t: Sort by modification time, newest first.
  • *.php: Wildcard matching all PHP files.
  • head -3: Take the first 3 lines of the sorted result.

Example 2: List the 3 oldest PHP files

ls -rt *.php | tail -3
  • -r: Reverse the sort order. Combined with -t, this sorts from oldest to newest.
  • tail -3: Take the last 3 lines of the sorted result.

Example 3: List the 5 newest files in the current directory (including hidden files)

ls -t -A | head -5
  • -A: List all entries except . and .., including hidden files.

Example 4: List the 5 newest files among multiple types

ls -t *.pdf *.doc | head -5

This command matches .pdf and .doc files separately, combines them, sorts by time, and takes the first 5.

Common ls Command Options Explained

Option Description
-l Use a long listing format showing permissions, links, owner, group, size, time, and name.
-a List all entries, including hidden files starting with ..
-A Like -a, but excludes . (current directory) and .. (parent).
-t Sort by modification time, newest first.
-r Reverse the sort order.
-S Sort by file size, largest first.
-h With -l, show file sizes in human-readable format (e.g., K, M, G).
-F Append a type indicator (* executable, / directory, @ symlink).
--color Colorize output by file type. Often default; use --color=auto or --color=never to control.
-R List subdirectories recursively.

Other Useful Techniques

1. List Only Subdirectories

Method 1: Use -F and grep to filter for the directory indicator.

ls -F | grep /$

Method 2: Use -l and grep to filter lines starting with d (directory permission).

ls -l | grep "^d"

2. Count Files and Directories in the Current Directory

Count files (excluding directories):

ls -l | grep "^-" | wc -l

Count directories (including hidden):

ls -l | grep "^d" | wc -l

3. Enable Color Output

Modern Linux distributions typically enable colored ls output by default. If not, you can set an alias:

alias ls='ls --color=auto'

Add this line to your shell configuration file (e.g., ~/.bashrc or ~/.zshrc) and run source ~/.bashrc to apply. Common color meanings:

  • Blue: Directory
  • Green: Executable file
  • Red: Archive/compressed file
  • Cyan: Symbolic link
  • Gray: Other regular files

Conclusion

Mastering the sorting, filtering, and formatting options of the ls command significantly enhances efficiency in command-line file management. The core technique lies in flexibly combining options like -t (time sort), -r (reverse), and -l (long format), and collaborating via pipes with commands such as head, tail, grep, and wc to precisely locate target files.

Post a Comment

Your email will not be published. Required fields are marked with *.