命令获取在Tcl中按年龄(mtime)排序的文件列表

时间:2018-03-23 18:41:39

标签: tcl

我尝试使用Tcl简单地处理目录中的文件列表,但希望按年龄顺序(最早的mtime到最新的)处理它们。我期望用glob或lsort中的某种参数来按文件mtime排序,但我没有看到这样的选项。

我试图避免创建自定义函数来执行此操作

是否有一个我缺少的选项会内置这个?

1 个答案:

答案 0 :(得分:2)

我不知道,但您当然可以使用适当的选项exec系统的文件列表命令。

使用mtime是一项相当昂贵的操作,因此使用它的应用程序通常采用快捷方式来避免查询。使其便携也增加了开销。

无论如何,它很容易实现:

set files [glob x*]
set fileAndMTime [lmap name $files {list $name [file mtime $name]}]
lmap item [lsort -integer -index 1 $fileAndMTime] {lindex $item 0}

最后一行给出了一个文件名列表,按照最小mtime到最大mtime的顺序排序(使用-decreasing来反转顺序,并注意排序是稳定的。)

文档: filegloblindexlmap (for Tcl 8.5)lmaplsort