white croquis

思索と探索のクロッキー帳。オーディオや音楽の話題、レビューなども。

Windowsのtreeコマンドで2階層目までだけを表示する方法

所用で調べたのでメモ。

Windowsと言うかMS-DOSの「tree」コマンドはディレクトリツリーを視覚的に表示できて便利だけど、オプションがほとんどないので、全サブディレクトリを表示する以外にできない。
浅い階層のディレクトリならともかく、深い階層にたくさんディレクトリがある場合、とんでもなく膨大なツリー図になって使い物にならなくなる。

c:\Documents and Settings> tree
フォルダ パスの一覧
ボリューム シリアル番号は 00X000XX XXXX:XXXX です
C:.
├─All Users
│  ├─Documents
│  │  ├─My Music
│  │  │  ├─My Playlists
│  │  │  ├─Sample Music
:

実際の所、ツリー表示をしたいと思うのはだいたい2階層目程度までのディレクトリ構造ではないだろうか?
そこで、2階層目までツリーを表示する簡単な方法はないかな〜?と試してひとまずたどり着いたのが、tree と findstr を組み合わせる方法。

具体的には、次の1行。

tree | findstr /R /C:"^├" /C:"^│  ├" /C:"^│  └" /C:"^└"

もちろん、tree の後にディレクトリ名を指定してもOK。

これを実行すると、こんな感じ。

c:\Documents and Settings> tree | findstr /R /C:"^├" /C:"^│  ├" /C:"^│  └" /C:"^└"
├─All Users
│  ├─Documents
│  ├─Favorites
│  ├─スタート メニュー
│  └─デスクトップ
└─username

tree の結果をパイプで findstr に渡して、2階層目までに出てくるパターンで抽出するだけ。
ちょっとコマンドプロンプトで表示したいとか、ちょっとしたバッチファイルでテキストに書き出したいというときにはこれで充分だと思う。3階層目まで欲しいときは「/C:」オプションで3階層目のパターンを追記すればたぶんOK。

ただしtreeコマンドの性質上、先に全階層を調べてしまうので、ネットワーク越しとか膨大なディレクトリが入った共有フォルダとかドライブのルートなどを指定して実行すると、とんでもなく時間がかかることがあるので注意。

もっときれいにやりたい場合は、ちゃんとスクリプトなりを書けばきっと出来るでしょう…



追記:関連ソフト

ちなみに、今回DOSコマンドを使ったのは、サーバ上やバッチで使うためだったのですが、自分用PCのGUI環境では、専ら「WinTree」を使ってます。好みの設定で出力できるのでとても便利。

また、用途は違いますが、各フォルダの容量一覧を知りたいときは「TreeSize Free」が便利です。





当ブログでは、Google Analytics, Google AdSense 等を使用しています。Google によるデータの収集ポリシーについて詳しくは「Google のサービスを使用するサイトやアプリから収集した情報の Google による使用」を参照ください。
当ブログに掲載の画像や文章等コンテンツの、引用の範囲を超えた無断転載はご遠慮ください。画像等のコンテンツにはメタデータで著作者情報等を埋め込んでいる場合があります。図やチャートの利用をご希望の場合は、お問合せフォームあるいは、Twitter @align_centre 宛にDM等でご連絡ください。