Treex - 高级命令行目录树可视化工具

🌳 Treex - 高级命令行目录树可视化工具

今天给读者推荐一个我最近开发的面向开发者的小工具——Treex。

🤔 为什么需要这个工具?

在开发与学习过程中,可能会遇到过这样的场景:

  • 对于一个较为陌生的项目,看着复杂的项目结构,不知道怎么入手
  • 想要快速告诉大模型自己一个项目的结构,让它辅助你理解
  • 写项目文档时需要插入目录结构的可视化

传统的tree命令虽然能用,但功能太基础了。楼主在使用过程中,常常会出现把不需要的文件同时绘制出来的情况(例如,node项目的node_modules),导致包含太多不必要的信息,看上去更乱了。

于是我利用cursor,使用go语言开发了Treex,这是一个支持多种输出格式、带过滤功能的目录树工具。

项目地址https://github.com/shiquda/treex

✨ 核心功能一览

🎨 多格式输出

  • 🌲 树状格式(默认):经典的命令行树状结构
  • 📑 缩进格式:简洁的层级缩进
  • 📝 Markdown格式:直接粘贴到文档里
  • 📊 Mermaid格式:生成可嵌入的流程图

🔍 智能过滤

  • 🕵️ 隐藏.git等隐藏文件
  • 📁 只显示目录结构
  • 🚫 排除指定目录/文件类型

🛠️ 高度可定制

  • 📏 控制目录深度
  • 💾 输出到文件
  • 🎯 自定义显示格式

🚀 快速上手

下载

方法1:下载预编译二进制文件

Release页面下载后,加入PATH

方法2:用Go编译安装

如果你有go环境,可以使用下面的代码一键安装:

1
go install github.com/shiquda/treex@latest

基础使用

1
2
3
4
5
6
7
8
# 查看当前目录结构
treex

# 查看指定目录
treex -d /path/to/project

# 查看help信息
treex -h

输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
└── .
├── .git
│ ├── HEAD
│ ├── config
│ ├── description
│ ├── hooks
│ │ ├── applypatch-msg.sample
│ │ ├── commit-msg.sample
│ │ ├── fsmonitor-watchman.sample
│ │ ├── post-update.sample
│ │ ├── pre-applypatch.sample
│ │ ├── pre-commit.sample
│ │ ├── pre-merge-commit.sample
│ │ ├── pre-push.sample
│ │ ├── pre-rebase.sample
│ │ ├── pre-receive.sample
│ │ ├── prepare-commit-msg.sample
│ │ ├── push-to-checkout.sample
│ │ ├── sendemail-validate.sample
│ │ └── update.sample
│ ├── info
│ │ └── exclude
│ ├── objects
│ │ ├── info
│ │ └── pack
│ └── refs
│ ├── heads
│ └── tags
├── .gitignore
├── 1.go
├── 2.go
├── README.md
├── build
│ └── win
│ └── output.exe
└── test
├── 3.go
└── README_test.md

⚡ 高级使用示例

1. 生成项目文档

1
2
# 排除隐藏文件,输出Markdown格式到指定文件
treex -H -f md -o PROJECT_STRUCTURE.md
  • ./
    • 1.go
    • 2.go
    • README.md
    • build/
      • win/
        • output.exe
    • test/
      • 3.go
      • README_test.md

2. 技术分享配图

1
2
# 只保留非隐藏的文件夹,生成Mermaid代码
treex -HD -f mermaid
1
2
3
4
5
6
7
8
graph TD
N1[./]
N2[build/]
N1 --> N2
N3[win/]
N2 --> N3
N4[test/]
N1 --> N4

mermaid-2025411 002546

3. 排除指定文件

1
2
# 排除不重要的文件夹和文件类型
treex -e ".git/, .md"
1
2
3
4
5
6
7
8
9
└── .
├── .gitignore
├── 1.go
├── 2.go
├── build
│ └── win
│ └── output.exe
└── test
└── 3.go

🛠️ 完整参数说明

可以前往 https://github.com/shiquda/treex 查看。

参数 说明
-d 指定扫描目录(默认当前目录)
-f 输出格式(tree/indent/md/mermaid)
-m 最大目录深度(0表示无限制)
-o 输出文件路径
-e 排除规则(逗号分隔)
-H 隐藏隐藏文件
-D 仅显示目录

💖 期待你的参与

Treex目前还在早期开发阶段。笔者还没有多少开发经验,受限于个人水平,工具难免有不足之处。如果你:

  • 发现了bug
  • 有功能建议
  • 想贡献代码

欢迎在GitHub给我提Issue或PR!当然,给个⭐星星鼓励也是极好的~

项目地址https://github.com/shiquda/treex