传递所选目录的每个文件

时间:2016-07-27 07:19:41

标签: tcl

有没有办法在tcl的特定变量中逐个传递所选目录的每个文件(带有扩展名.tcl)?

1 个答案:

答案 0 :(得分:3)

做我认为你想做的事情的一种方法是

foreach file [glob -directory $dir *.tcl] {
    # do something with the filename $file
}

glob命令返回与最后一个参数中的模式匹配的文件名列表(在本例中为*.tcl,这意味着"任何以.tcl"结尾的名称; )。 -directory选项指定在哪个目录中查找文件。

如果没有与模式匹配的文件,该命令将引发错误。要避免这种情况,只需获取一个空列表,请使用选项-nocomplain

foreach命令采用变量规范,列表(在本例中为文件名列表)和脚本。对于每个项目(或某些情况下的一批项目),将变量设置为项目,对脚本进行一次评估。

文档: foreachglobFile name conventions supported by Tcl commands

Tcl字符串匹配的语法:

  • *匹配零个或多个字符的序列
  • ?匹配单个字符
  • [chars]匹配字符给出的集合中的单个字符(^ 否定;范围可以 az
  • \x匹配字符 x ,即使该字符是特殊字符(*?[]\之一)