フォルダ内を再帰的に検索

Pocket

再帰的にフォルダ内を検索して条件に合うファイルを取得するための関数。
引数の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
}

コメントする

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください