再帰的にフォルダ内を検索して条件に合うファイルを取得するための関数。
引数のdirには検索対象のフォルダのパス、masksには「*.txt *.exe」のように取得したいファイルの種類をリストで渡します。
返り値はファイル名のリストです。
proc globRecursive {dir masks} {
set result [list]
foreach cur [lsort [glob -nocomplain -dir $dir *]] {
if {[file type $cur] == "directory"} {
eval lappend result [globRecursive $cur $masks]
} else {
foreach mask $masks {
if {[string match $mask $cur]} {
lappend result $cur
break
}
}
}
}
return $result
}