我正在尝试列出所有正好低于1级的* .tcl文件。 如
./dirA/x.tcl
./dirB/y.tcl
./dirC/z.tcl
我使用foreach
命令列出所有文件&子目录下的目录,但输出为空..
foreach dir [glob -type d *] {
glob -path ./$dir *
}
答案 0 :(得分:2)
首先,您可能需要-directory
选项而不是-path
选项。它可以缩写为-dir
。此外,您希望文件与*.tcl
匹配,而不是每个文件(*
)。
foreach dir [glob -type d *] {
glob -dir $dir *.tcl
}
其次,foreach
命令不会收集它运行的脚本的结果,因此您需要自己执行此操作:
set files [list]
foreach dir [glob -type d *] {
lappend files {*}[glob -dir $dir *.tcl]
}
现在files
变量应该包含您想要的文件名。
如果您使用旧版本的Tcl(8.5之前),则需要像这样编写:
set files [list]
foreach dir [glob -type d *] {
set files [concat $files [glob -dir $dir *.tcl]]
}
答案 1 :(得分:2)
你只需要一次对glob的调用:
set tcl_files [glob */*.tcl]