在日常使用 Linux 的过程中,我们经常需要查看某个目录下的文件或子目录,并根据它们的时间顺序进行排序。比如你可能想要找出最早创建的日志文件,或者按照文件修改时间梳理一个项目的更新轨迹。

本文将介绍如何在 Linux 系统中 按照时间顺序从早到晚排列文件和目录,以及如何根据不同需求(例如修改时间、创建时间等)做出相应调整。


一、最常用方法:ls -ltr

最简单、最常用的命令就是:

ls -ltr

这条命令会列出当前目录下的所有文件和子目录,并按 最后修改时间从早到晚 排列。

参数解析:

  • -l:使用长格式显示(包含权限、用户、时间等信息)
  • -t:按照修改时间排序(默认是最新的文件在前)
  • -r:反转排序结果,从早到晚排列

示例:

$ ls -ltr
-rw-r--r-- 1 user user 0 2024-06-01 10:00 old_file.txt
-rw-r--r-- 1 user user 0 2024-07-01 12:00 middle_file.txt
-rw-r--r-- 1 user user 0 2025-08-01 09:00 new_file.txt

二、将目录排在前面:--group-directories-first

如果你希望把目录列在最前面,其余按时间排序,可以加上 --group-directories-first

ls -ltr --group-directories-first

这样输出会先列出目录,再列出文件,依然保持时间从早到晚的排序。


三、只列出文件并按时间排序:使用 findstat

如果你只关心文件,而不想看到目录,可以使用 find 命令结合 stat 来达到更精确的控制:

find . -type f -printf "%T@ %p\n" | sort -n

含义:

  • find . -type f:查找当前目录及其子目录中的所有文件
  • -printf "%T@ %p\n":打印出时间戳和路径
  • sort -n:按时间戳从小到大排序(即从早到晚)

如果你只想看文件名(不含时间戳):

find . -type f -printf "%T@ %p\n" | sort -n | cut -d' ' -f2-

四、关于“创建时间”的说明(ctime ≠ 创建时间)

你可能会问:“我能按照文件的创建时间排序吗?”
答案是:通常不行,因为大多数 Linux 文件系统(如 ext4)并不记录文件的创建时间。

不过,如果你的系统使用的是支持创建时间的文件系统(例如 btrfs 或 xfs),并使用了 statx 工具,可以尝试:

statx -c '%W %n' *

然后再用 sort 处理。


五、小结

需求命令
按修改时间从早到晚排序所有文件/目录ls -ltr
将目录排在文件前面ls -ltr --group-directories-first
只列出文件并按时间排序find . -type f -printf "%T@ %p\n" | sort -n
尝试获取创建时间排序(有局限)statx -c '%W %n' *(需要支持的文件系统)

通过以上方法,你可以根据自己的实际需求灵活地对 Linux 文件和目录进行时间排序,无论是查看最旧的日志、排查最近的改动,还是整理项目文件,都会更加高效有序。

Leave a Reply

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