ディレクトリ階層をツリー表示するプログラム
ローカル環境にtreeが入っていなかったので、rubyで書いてみました。
# #== ディレクトリ階層をツリー表示する。 # def tree( path, stack=[], has_next=false, &block ) puts stack.join << (has_next ? "├" : "└" ) << File.basename( path ) if File.directory? path list = [] Dir.foreach( path ) {|d| dir = path + "/" + d next if d == "." || d == ".." || ( block_given? && !block.call(dir) ) list << dir } stack << (has_next ? "│ " : " ") list.each_index {|i| tree( list[i], stack, i < list.size-1, &block ) } stack.pop end end
使い方。
# 指定ディレクトリ配下をツリー表示する tree( "./test" ) puts "---" # ブロックで除外する要素を指定できる。 tree( "./test" ) { |d| !( d =~ /\/bbbbb$/ ) # "bbbbb"はツリーに含めない。 }
実行結果です。
└test ├aaaaa │ ├x.txt │ └y.txt ├bbbbb │ ├x.txt │ └y.txt ├x.txt └y.txt --- └test ├aaaaa │ ├x.txt │ └y.txt ├x.txt └y.txt