使用tcl搜索具有特定模式的文件

时间:2014-07-04 08:38:50

标签: tcl

我想搜索以下模式的文件:

debug_abc_xyz_123_$times

debug_ad_kdsfj_da_$times

其中times是我从用户处获得的变量,其格式为:

yyyymmdd-hhmmss-IST

这不起作用:

set fh [open debug_*_$times r]

还有其他办法吗?

1 个答案:

答案 0 :(得分:1)

您可以使用glob获取遵循此模式的文件列表(下面,该文件必须与脚本位于同一目录中;使用-directory并以其他方式提供路径):

set files [glob debug_*_$times]

一旦你得到这个,你可以浏览列表并打开一个。现在,我不知道你想要打开什么文件,如果还有更多,我会假设只有一个。

set fh [open $files r]

正如Hoodiecrow正确提到的,如果文件名包含可能破坏上述代码的字符,那么使用lindex文件会更好:

set fh [open [lindex $files 0] r]

如果您想获取最新文件,可以使用file mtime和循环来提供帮助:

set latest_file ""
set latest_date 0
foreach file $files {
     set mtime [file mtime $file]
     if {$mtime > $latest_date} {
         set latest_date $mtime
         set latest_file $file
     }
}
set fh [open $latest_file r]

如果您有多个具有相同修改日期的文件,则上述文件将按照它们glob的顺序打开第一个文件。