Windows和Linux的tree工具

发布于:2025-08-02 ⋅ 阅读:(15) ⋅ 点赞:(0)

目录

1.前言

2.Linux的tree工具

2.1.安装tree

2.2.常用命令与参数

2.3.常见应用场景

2.4.注意事项

3.Windows的tree工具

3.1.基础语法

3.2.核心参数详解

3.3.常见应用场景

3.4.局限性与增强方案

4.Windows 与 Linux tree 的核心差异

5.tree工具优势

5.总结


1.前言

        在阅读工程源代码的时候,一开始很想大概浏览一下整个项目的目录,层次结构和各目录大致有那些文件,如下面这种:

此时,tree命令就正好用得到。

        tree 是一个实用的目录列表工具,以树形结构递归显示文件和目录,直观展示层级关系。它支持自定义过滤、排序、输出格式等功能,是管理文件系统的利器。Windows 和 Linux 系统中都有类似工具,但功能和使用方式略有差异。

2.Linux的tree工具

Linux 系统通常默认不预装 tree,但可以通过包管理器快速安装,功能丰富且参数灵活。

2.1.安装tree

Debian/Ubuntu 系

sudo apt update && sudo apt install tree

 RedHat/CentOS 系

sudo yum install tree  # CentOS 7及以下
# 或
sudo dnf install tree  # CentOS 8+/Fedora

Arch 系

sudo pacman -S tree

2.2.常用命令与参数

基本语法:tree [参数] [目录路径](默认显示当前目录)

通过 man tree 命令查看帮助信息

大致看了下,翻译了一些常见的选项如下:

-a            #显示所有文件和目录
-d            #显示目录名称而非文件
-l            #如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录
-f            #在每个文件或目录之前,显示完整的相对路径名称
-x            #将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,则将该目录予以排除在寻找范围外
-L level      #限制目录显示层级
-R            #不要列出与给定模式匹配的文件
-P pattern    #<范本样式> 只显示符合范本样式的文件和目录名称
-I pattern    #不列出与给定模式匹配的文件
--ignore-case #模式匹配时忽略大小写
--matchdirs   #在-P模式匹配中包含目录名
--noreport    #关闭树列表末尾的文件/目录计数
--charset X   #将字符集X用于终端/HTML和缩进行输出
--filelimit   #请勿下载包含超过个文件的目录
--timefmt <f> #根据格式<f>打印和格式化时间
-o filename   #输出到文件而不是输出到屏幕
--du          #打印目录大小
--prune       #从输出中删除空目录
-------- 文件选项 ---------
-q            #用“?”号取代控制字符,列出文件和目录名称
-N            #直接列出文件和目录名称,包括控制字符
-Q            #用双引号引用文件名
-p            #列出权限标示
-u            #列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码
-g            #列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码
-s            #列出文件和目录大小
-h            #以更易读的方式打印大小
--si          #类似于-h,但使用国际单位制(1000的幂)
-D            #列出文件或目录的更改时间
-F            #在执行文件,目录,Socket,符号连接,管道名称名称,各自加上"*","/","@","|"号
--inodes      #打印每个文件的索引节点号
--device      #打印每个文件所属的设备ID号
------- 排序选项 -------
-v            #按字母数字对文件进行排序
-t            #用文件和目录的更改时间排序
-c            #按最后的更改时间对文件进行排序
-U            #天下黄河
-r            #反转排序顺序
--dirsfirst   #在文件之前列出目录(-U禁用)
--sort X      #选择排序:名称、版本、大小、时间、时间
------- 图形选项 ------
-i            #不以阶梯状列出文件和目录名称
-A            #使用ASNI绘图字符显示树状图而非以ASCII字符组合
-S            #使用CP437(控制台)图形压痕线打印
-n            #始终关闭着色(-C覆盖)
-C            #在文件和目录清单加上色彩,便于区分各种类型
------- XML / HTML / JSON选项 -------
-X            #打印出XML表示形式的树
-J            #打印出JSON表示形式的树
-H baseHREF   #打印出以baseHREF为顶部目录的HTML格式
-T string     #将默认HTML标题和H1标头替换为字符串
--nolinks     #关闭HTML输出中的超链接
---- 杂项选项 ----
--version     #输入版本信息
--help        #打印使用帮助信息
--            #选项处理终止符

2.3.常见应用场景

1.查看项目核心结构(排除冗余目录)

# 显示Python项目前3层结构,排除虚拟环境、缓存和日志目录
tree -L 3 -I "venv|__pycache__|logs" -d

2.生成带文件大小的文档目录树(用于说明文档)

# 显示docs目录所有内容(包括隐藏文件),带大小,不显示统计,保存到文件
tree -a -h --noreport docs/ -o docs_tree.txt

3.筛选特定类型文件并显示完整路径

# 查找所有.sh脚本,显示完整路径,限制2层深度
tree -L 2 -f -P "*.sh"

4.查看目录权限结构(系统管理)

# 查看/etc下的权限和目录结构,先显示目录
tree -d -p --dirsfirst /etc -L 2

5.显示文件权限、所有者和所有组(-p、-u、-g)

6.完整路径显示(-f)

7.输出重定向(-o)

[root@blog ~]# tree -o structure.txt #将结果保存到文件

#验证
[root@blog ~]# cat structure.txt
.
├── anaconda-ks.cfg
├── dir1
│   ├── file1.txt
│   └── subdir
├── dir2
│   └── report.pdf
└── structure.txt

3 directories, 4 files

8.以易读的格式输出文件目录(-h)

[root@blog ~]# tree -h
.
├── [ 1.5K]  anaconda-ks.cfg
├── [   37]  dir1
│   ├── [    0]  file1.txt
│   └── [    6]  subdir
├── [   24]  dir2
│   └── [    0]  report.pdf
└── [  469]  structure.txt

3 directories, 4 files

9.生成JSON格式列表(-J)

10.查看文件占用空间大小

11.结合grep过滤内容

2.4.注意事项

1.超大目录建议配合-L参数限制遍历层数。

2.使用 tree | grep "files"可以显示文件总数,输出末尾会统计

3.tree命令若不添加任何选项,默认显示当前目录下所有可见文件和目录(不含隐藏文件),并在末尾显示统计信息(总目录数、总文件数)。

3.Windows的tree工具

Windows 系统中的 tree 工具主要用于在命令行(CMD 或 PowerShell)中以树形结构展示目录和文件,虽然功能不如 Linux 版本丰富,但足以满足基础的目录可视化需求。

3.1.基础语法

在 CMD 命令提示符 中直接使用(PowerShell 需通过兼容模式调用),基本格式:

tree [目录路径] [参数]
  • 若不指定 [目录路径],默认显示当前目录的结构。
  • 若不添加参数,默认只显示目录(不包含文件),并在末尾显示统计信息(总目录数)。

3.2.核心参数详解

Windows 的 tree 工具参数较少,主要有以下 2 个常用参数:

参数 功能说明
/f 显示目录结构的同时,包含所有文件(默认只显示目录)。
/a 用 ASCII 字符 显示树形边框(如 +-、` ),默认用 Unicode 字符(如 ─`)。适合在不支持 Unicode 的环境中使用(避免乱码)。

3.3.常见应用场景

1.显示当前目录的目录结构(不含文件)

tree

卷 系统 的文件夹 PATH 列表
卷序列号为 XXXX-XXXX
C:\USER\PROJECT
├─docs
├─src
│  └─utils
└─tests

2.显示当前目录的完整结构(包含所有文件)

tree /f

卷 系统 的文件夹 PATH 列表
卷序列号为 XXXX-XXXX
C:\USER\PROJECT
├─docs
│  └─README.md
├─src
│  ├─main.py
│  └─utils
│     └─helper.py
└─tests
    └─test_main.py

3.显示指定目录的结构(如 D 盘的 Downloads 文件夹)

tree D:\Downloads /f

作用:展示 D:\Downloads 目录下的所有子目录和文件。

4.用 ASCII 字符显示结构(避免 Unicode 乱码)

tree /a 

卷 系统 的文件夹 PATH 列表
卷序列号为 XXXX-XXXX
C:\USER\PROJECT
+---docs
+---src
|   \---utils
\---tests

5.将目录结构输出到文件(用于保存或分享)

tree /f > 目录结构.txt

作用:将当前目录的完整结构(含文件)写入 目录结构.txt 文件,方便在文档中引用或发送给他人。

3.4.局限性与增强方案

Windows 原生 tree 工具功能较简单,不支持 以下功能:

  • 限制显示层级(如只显示前 2 层);
  • 过滤特定类型文件(如只显示 .txt 文件);
  • 排除指定目录(如忽略 node_modules);
  • 显示文件大小、权限等属性。

若需要更强大的功能,可安装 类 Linux 的 tree 工具

1.先安装 Windows 包管理器 Chocolatey(管理员 PowerShell 中执行):

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

2.安装增强版 tree

choco install tree

3.使用方法与 Linux tree 完全一致(支持 -L-I 等参数):

tree -L 2 -I "venv"  # 显示2层结构,排除venv目录

4.Windows 与 Linux tree 的核心差异

特性 Linux tree Windows 原生 tree
功能丰富度 高(支持过滤、大小显示、深度控制等) 低(仅基础目录树显示)
隐藏文件显示 支持(-a 参数) 不支持(需手动筛选)
跨平台一致性 各 Linux 发行版用法统一 仅 CMD 支持,PowerShell 需模拟
安装需求 需手动安装(多数系统) 系统自带(CMD 中)

5.tree工具优势

1.直观的层级可视化,一目了然

tree 以树形分支结构展示目录和文件的层级关系,用线条(如 |├─└─)清晰区分父子目录,相比 ls -lR 等命令输出的平铺式列表,能瞬间让人理解目录的嵌套逻辑。

例如,一个项目的树形结构:

project/
├── src/
│   ├── main.py
│   └── utils/
│       └── helper.py
├── docs/
│   └── README.md
└── requirements.txt

这种结构比逐行查看路径更易把握整体框架,尤其适合复杂项目(如代码仓库、多层级文档)。

2.灵活控制显示范围,避免信息过载

tree 支持通过参数精准过滤内容,只展示需要的信息,避免被冗余内容干扰:

  • 限制深度:用 -L N(Linux)或通过工具扩展(Windows)控制显示的层级(如只看前 2 层),适合大型目录(如系统文件、深度学习项目)。
  • 只看目录 / 文件:用 -d(Linux)只显示目录,或结合 -f 只关注文件,快速定位 “容器” 或 “内容”。
  • 按名称过滤:用 -P 模式(如 -P "*.py")只显示特定类型文件,或 -I 模式(如 -I "venv")排除冗余目录(如虚拟环境、缓存文件夹)。

3.高效集成额外信息,一站式获取关键数据

除了结构,tree 能通过参数直接附加实用信息,无需额外命令:

  • 文件大小:-h(Linux)以人类可读单位(K、M、G)显示大小,快速判断大文件位置。
  • 完整路径:-f(Linux)显示每个文件 / 目录的绝对路径,方便直接复制使用(如在脚本中引用)。
  • 隐藏文件:-a(Linux)显示 .gitignore.env 等隐藏文件,避免遗漏关键配置。

4. 轻量快捷,跨场景适配性强

  • 操作简单:基础用法只需 tree [目录],无需记忆复杂参数,新手也能快速上手。
  • 跨平台兼容:Linux、macOS(需安装)、Windows(原生或第三方工具)均支持,习惯后可在不同系统中保持一致操作。
  • 便于分享与存档:输出结果可直接重定向到文件(如 tree > structure.txt),用于文档记录、项目说明或远程沟通(如向同事展示目录结构)。

5.总结

  tree 工具的核心优势在于将复杂的目录关系 “图形化”,同时通过灵活的过滤和信息附加功能,帮助用户在短时间内掌握目录的整体结构、关键文件位置和必要属性,大幅提升文件管理和项目梳理的效率,尤其适合开发者、运维人员或需要频繁处理多层级文件的场景。