我想搜索以下模式的文件:
debug_abc_xyz_123_$times
或
debug_ad_kdsfj_da_$times
其中times
是我从用户处获得的变量,其格式为:
yyyymmdd-hhmmss-IST
这不起作用:
set fh [open debug_*_$times r]
还有其他办法吗?
答案 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
的顺序打开第一个文件。