Windows和Linux的tree工具

目录

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

相关链接

Linux 教程 | 菜鸟教程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/91691.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/91691.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[echarts] 更新数据

option {title: { text: 销售数据 },tooltip: { trigger: axis },legend: { data: [销量, 库存] },xAxis: {type: category,data: [衬衫, 羊毛衫, 雪纺衫]},yAxis: { type: value },series: [{ name: 销量, type: bar, data: [5, 20, 36] },{ name: 库存, type: line, data: […

通过el-image实现点击文字查看图片,及其图片列表

场景一&#xff1a;表格中有时候会有点击文字查看图片的功能&#xff08;因为表格的一个单元格不方便显示多个图片&#xff09;如下图所示&#xff1a;对于这个需求&#xff0c;我们可以应对的方案是&#xff1a;在文字旁边写一个el-image图默认显示多张图片中的第一张&#xf…

003 实习(前端jquery之轮播图,学校网页)

web前端,查询官网:w3schoolHTML:负责网页结构&#xff08;页面元素和内容&#xff09;CSS:负责网页的表现&#xff08;网页元素的外观、位置等页面样式&#xff0c;如颜色&#xff0c;大小&#xff09;JAVAScript:负责网页的行为&#xff08;交互效果&#xff09;<a>:超链…

Mysql group by

临时表与内存表 内存表是 Memory 引擎表&#xff0c;表的数据行都在内存。 临时表可以使用各种引擎。 临时表是线程私有表&#xff0c;其他线程不可见&#xff0c;不需考虑重名问题。 session 结束时临时表会被自动删除。 如果 Binlog_format row&#xff0c;则临时表语句不进…

Linux(15)——进程间通信

目录 一、进程间通信的介绍 ✍️进程间通信的目的 ✍️进程间通信的本质 进程间通信的分类 ✍️管道 ✍️System V IPC ✍️POSIX IPC 二、管道 &#x1f9e0;什么是管道 ✍️匿名管道 &#x1f4dd;匿名管道的原理 &#x1f4dd;pipe函数 &#x1f4dd;匿名管道…

【Flutter】双路视频播放方案

最近在做双路视频播放&#xff0c;就是在一个页面播放两个视频。我遇到的问题就是音频焦点冲突问题&#xff0c;在下面说明。什么是双路视频播放&#xff08;来自AI&#xff09;双路视频播放&#xff08;Dual-Video Playback&#xff09;&#xff0c;从字面上理解&#xff0c;就…

笔试——Day25

文章目录第一题题目思路代码第二题题目&#xff1a;思路代码第三题题目&#xff1a;思路代码第一题 题目 笨小猴 思路 模拟 统计每个字符出现的次数&#xff0c;用最大减最小&#xff0c;判断是不是质数&#xff1b; 质数的判断使用试除法&#xff1b; 代码 第二题 题目&…

【C#学习Day15笔记】拆箱装箱、 Equals与== 、文件读取IO

前言在C#第15天的学习中&#xff0c;我深入探索了类型转换机制、对象比较原理和文件操作技术三大核心主题。这些知识是构建高效、健壮程序的关键基础。本文完整保留我的课堂实践代码和命名体系&#xff0c;通过结构化梳理帮助大家掌握这些核心概念。所有代码示例均来自我的实际…

发电类电力业务许可证申请条件

基本条件&#xff1a;法人资格&#xff1a;申请人必须是依法注册的企业法人。 财务能力&#xff1a;应具有与所申请从事的电力业务相适应的财务能力。 专业人员要求&#xff1a;生产运行负责人、技术负责人、安全负责人和财务负责人需具备至少3年以上与申请从事的电力业务相关的…

JavaScript 高效入门指南:从基础到实战(VSCode 版)

废话不多说&#xff0c;直接上干货&#x1f600; 一、先搞定工具&#xff1a;VSCode 配置成「JS 开发神器」 工欲善其事&#xff0c;必先利其器。用 VSCode 写 JavaScript&#xff0c;这几个配置能让你效率翻倍&#xff1a; 1. 必装插件&#xff08;直接在 VSCode 插件商店搜…

《人形机器人的觉醒:技术革命与碳基未来》——类人关节设计:柔性驱动革命之液压人工肌肉

目录&#xff1a;一、人工肌肉的种类及人形机器人适用情况二、人形机器人用人工肌肉科研机构及其最新成果进展三、液压人工肌肉种类及工作机制四、液压人工肌肉适用人形机器人的性能要求和局限性五、液压人工肌肉材料技术进展及其限制与突破六、波士顿动力Spot的液压静液传动系…

26数据结构-顺序表

&#x1f4cc;有序顺序表的合并 #define MAX_SIZE 20 struct SeqList {int data[MAX_SIZE];int length; }; void mergeArray(SeqList &L1,SeqList &L2,SeqList &L) {int i0,j 0;while(i<L1.length && j<L2.length){if(L1.data[i]<L2.data[j])L.da…

25电赛e题 控制激光开关电路

e题明确说了禁止使用继电器控制&#xff0c;所以需要自己搭建一个mos管控制电路这里使用mos管来驱动GPIO → 电阻(220Ω) → MOSFET栅极(如IRF520N)MOSFET漏极接激光器正极MOSFET源极接地激光器负极直接接电源连接方式如下这里r36为栅极电阻&#xff0c;需要跟你们使用的mos配合…

ubuntu apt源报错?

报错原因&#xff1a;一、网络连接方面1.网络不通畅&#xff08;常见&#xff09;简单来说就是你的虚拟机连不上网&#xff0c;这时候你应该检查自己的ip 是不是dhcp自动获取的&#xff0c;或者你的网络配置是否有误。2.DNS 解析故障&#xff1a;DNS 服务器配置错误或 DNS 服务…

Scene as Occupancy

OccNet https://github.com/OpenDriveLab/OccNet Scene as Occupancy 提出了一种新的场景表示方法&#xff0c; 利用环视摄像头&#xff0c;采用级联和时序体素编码的方式来重建三维Occ场景。Method 1&#xff09;提出的OCCNet首先重建占据描述符&#xff0c;目标是为支持下游任…

Linux基础复习:字符输入与输出

该文仅针对自身对Linux基础知识不足的地方进行补充扩展&#xff0c;便于巩固。终端的输入和输出由字符设备管理。1、查看当前字符设备# 查看当前bash进程 [rootopenEuler-1 ~]# psPID TTY TIME CMD9662 pts/1 00:00:00 bash9938 pts/1 00:00:00 ps# 该目录存放了…

【初识数据结构】CS61B中的基数排序

本教程介绍 CS61B 中的基数排序&#xff0c;这是一种可以在某些情况下甚至超越归并排序、快速排序的特殊的排序方法&#xff0c;但是牺牲了内存空间计数排序 连续编号情形 我们需要对一个编号从 0 到 11 的表进行排序实际上我们可以拿出另一张同样大小的空白表&#xff0c;在遍…

ReAct模式深度解析:构建具备推理能力的AI智能体架构

本文深入剖析ReAct(Reasoning+Acting)架构设计模式,揭示如何通过推理与行动循环构建具备自主决策能力的AI智能体,并展示其在复杂问题求解中的革命性突破。 引言:从工具调用到自主决策的进化 传统AI系统面临的核心瓶颈: #mermaid-svg-orlnKyviyW86xIJZ {font-family:&quo…

Corrosion2靶机攻略

第一步搭建环境 靶机下载地址&#xff1a;https://download.vulnhub.com/corrosion/Corrosion2.ova 下载完成后直接右击用VM打开&#xff0c;重试一下就可以了 右击虚拟机设置将网络连接改成nat模式 第二步信息收集 查看一下靶机的网段&#xff0c;左上角编辑&#xff0c;虚…

SSL 剥离漏洞

一、SSL/TLS 协议基础​1.1、SSL/TLS 协议的核心功能​SSL/TLS 协议的核心功能主要包括三个方面&#xff1a;加密、认证和完整性校验&#xff0c;这三大功能共同构建了网络通信的安全屏障。​&#xff08;一&#xff09;加密​加密是 SSL/TLS 协议最基本的功能。它通过使用对称…