我尝试使用Tcl简单地处理目录中的文件列表,但希望按年龄顺序(最早的mtime到最新的)处理它们。我期望用glob或lsort中的某种参数来按文件mtime排序,但我没有看到这样的选项。
我试图避免创建自定义函数来执行此操作
是否有一个我缺少的选项会内置这个?
答案 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
来反转顺序,并注意排序是稳定的。)