Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用tcl搜索具有特定模式的文件_Tcl - Fatal编程技术网

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

使用tcl搜索具有特定模式的文件,tcl,Tcl,我要搜索以下模式的文件: debug_abc_xyz_123_$times 或 其中,thistimes是我从用户处获得的一个变量,其形式如下: yyyymmdd-hhmmss-IST 这不起作用: set fh [open debug_*_$times r] 还有其他方法吗?您可以使用以获取遵循此模式的文件列表(在下面,文件必须与脚本位于同一目录中;使用-directory,否则请给出路径): 一旦你得到这个,你可以浏览列表并打开一个。现在,如果有更多的文件,我不知道您想要打开哪个文件,

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

debug_abc_xyz_123_$times

其中,this
times
是我从用户处获得的一个变量,其形式如下:

yyyymmdd-hhmmss-IST
这不起作用:

set fh [open debug_*_$times r]
还有其他方法吗?

您可以使用以获取遵循此模式的文件列表(在下面,文件必须与脚本位于同一目录中;使用
-directory
,否则请给出路径):

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

set fh [open $files r]
正如Hoodiecrow正确提到的那样,如果文件名包含可能破坏上述代码的字符,则最好使用
lindex
file:

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
bed.

否的顺序打开第一个文件。。我已经生成了许多文件,并在最后附加了上述给定的时间戳。所以我只需要根据时间戳和模式搜索文件。第一个解决方案奏效了。谢谢:)@aro-Oh-duh-lol。忘了那个。现在把它放在这里不会有什么坏处。不客气!请注意,即使列表中只有一个文件,如果文件名包含空格或其他无法在列表中不加引号的字符,则使用文件列表作为
打开
的参数也可能失败。最好使用
打开[lindex$files 0]
,即使
[llength$files]==1
set fh [open [lindex $files 0] r]
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]