如何按最后修改的内容对目录进行排序?

How to sort directory by last modified content?

我认为默认情况下,目录应该按 ls -lt 最后修改的内容排序。但事实并非如此,至少在我的CentOS 7系统中是这样。请查看下面的终端输出。

似乎目录在创建文件时按预期排序,但在修改文件时却不是。

如何让它们按其中任何内容的最后修改时间排序?

[chinazzo@potzblix test]$ mkdir dir1
[chinazzo@potzblix test]$ mkdir dir2
[chinazzo@potzblix test]$ echo "Create in dir1" > dir1/file
[chinazzo@potzblix test]$ ls -lta
total 4
drwxrwxr-x.  2 chinazzo chinazzo   18 Jan 19 11:55 dir1     # Ok
drwxrwxr-x.  4 chinazzo chinazzo   30 Jan 19 11:55 .
drwxrwxr-x.  2 chinazzo chinazzo    6 Jan 19 11:55 dir2
drwx------. 31 chinazzo chinazzo 4096 Jan 19 11:49 ..
[chinazzo@potzblix test]$ echo "Create in dir2" > dir2/file
[chinazzo@potzblix test]$ ls -lta
total 4
drwxrwxr-x.  2 chinazzo chinazzo   18 Jan 19 11:56 dir2     # Ok
drwxrwxr-x.  2 chinazzo chinazzo   18 Jan 19 11:55 dir1
drwxrwxr-x.  4 chinazzo chinazzo   30 Jan 19 11:55 .
drwx------. 31 chinazzo chinazzo 4096 Jan 19 11:49 ..
[chinazzo@potzblix test]$ echo "Mod in dir1" >> dir1/file
[chinazzo@potzblix test]$ ls -lta
total 4
drwxrwxr-x.  2 chinazzo chinazzo   18 Jan 19 11:56 dir2
drwxrwxr-x.  2 chinazzo chinazzo   18 Jan 19 11:55 dir1     # Not ok, notice mtime 11:55
drwxrwxr-x.  4 chinazzo chinazzo   30 Jan 19 11:55 .
drwx------. 31 chinazzo chinazzo 4096 Jan 19 11:49 ..
[chinazzo@potzblix test]$ ls -lta dir1
total 4
-rw-rw-r--. 1 chinazzo chinazzo 27 Jan 19 11:56 file        # but file (in dir1) mtime 11:56
drwxrwxr-x. 2 chinazzo chinazzo 18 Jan 19 11:55 .
drwxrwxr-x. 4 chinazzo chinazzo 30 Jan 19 11:55 ..

使用查找:

find . -type d -printf "%Ts/%f\n" | sort -n

仅搜索目录,然后以纪元格式 (%Ts) 打印最后修改时间以及目录名称 (%f)。将输出通过管道传递给 sort -n 以按修改时间对目录进行排序。