安装 tree 命令 (最直接的解决方案)
这是最彻底的解决方法,安装后你就可以一直使用 tree 命令了。

在 macOS 上安装
macOS 自带的命令行工具 pkgutil 和 installer 可以方便地安装 Xcode 命令行工具,其中就包含了 tree。
步骤:
打开你的“终端”(Terminal),然后执行以下命令:
# 安装 Xcode 命令行工具(包含 tree) xcode-select --install
系统会弹出一个安装窗口,点击“安装”并同意条款即可,安装完成后,tree 命令就可以直接使用了。

如果你已经安装了 Homebrew,也可以用它来安装:
# 首先确保你安装了 Homebrew # 如果没有,访问 https://brew.sh/ 按照说明安装 # 然后使用 brew 安装 tree brew install tree
在 Linux (如 Ubuntu, Debian, CentOS) 上安装
大多数 Linux 发行版都有自己的包管理器。
对于 Debian / Ubuntu 系统:
# 更新软件包列表 sudo apt-get update # 安装 tree sudo apt-get install tree
对于 CentOS / RHEL / Fedora 系统:

# 对于 CentOS/RHEL 7 及以上,使用 dnf sudo dnf install tree # 对于 CentOS/RHEL 6 或更早,使用 yum sudo yum install tree
对于 Arch Linux 系统:
sudo pacman -S tree
安装完成后,你就可以在任何目录下使用 tree 命令了,
tree /path/to/your/directory
使用替代命令 (无需安装)
如果你不想安装任何新软件,或者只是临时需要查看目录结构,可以使用系统自带的命令组合来达到类似效果。
使用 find 命令 (功能强大,最常用)
find 是一个非常强大的命令,可以递归查找文件和目录,通过一些参数,我们可以让它输出类似 tree 的格式。
基本用法:
# 显示当前目录及其所有子目录 find . -type d
更美观的 tree 风格输出:
这个命令组合会创建一个缩进结构,非常直观。
find . -type d -printf "%P\n" | sed -e 's;[^/]*/;|;g;s;|; |;g'
命令解释:
find . -type d: 从当前目录 () 开始,查找所有类型为目录 (-type d) 的文件。-printf "%P\n": 打印出相对于当前目录的路径 (%P),并以换行符结尾 (\n)。sed -e '...': 使用sed命令来格式化输出。s;[^/]*/;|;g: 将路径中的每一级目录( 开头的非 字符串)替换成一个 。s;|; |;g: 将单个 替换成 ,增加一个空格,使其看起来更美观。
示例输出:
.
├── dir1
│ ├── sub_dir1
│ └── sub_dir2
├── dir2
│ └── file.txt
└── another_file
使用 ls 命令递归查看
ls 命令本身不递归,但可以结合 find 或 exec 来实现。
使用 find + ls
# 查看所有目录和文件 find . -print | sort | sed 's;[^/]*/;|;g;s;|; |;g'
这个命令会列出所有文件和目录,并用 和空格来构建层级关系。
使用 ls -R (Recursive)
# 简单递归列出所有内容,但格式比较混乱 ls -R
ls -R 会先列出当前目录,然后列出子目录下的内容,用冒号 分隔,虽然功能上递归了,但视觉上不如 tree 清晰。
总结与推荐
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
安装 tree |
功能最全,命令最简单,输出最美观 | 需要额外安装一次 | 强烈推荐,如果你经常需要查看目录结构,这是最佳选择。 |
find + sed |
无需安装,功能强大,可自定义输出格式 | 命令较长,需要记忆 | 临时使用,或在无法安装软件的受限环境中。 |
ls -R |
系统自带,最简单 | 输出格式混乱,可读性差 | 仅需快速、粗略地查看目录结构时。 |
我的建议是:
- 如果你在 macOS 或 Linux 上工作,花一分钟时间按照方案一安装
tree命令,这会给你带来长久的便利。 - 如果你在别人的电脑上或一个受限的服务器上,无法安装软件,那么方案二的
find命令组合是你的最佳选择,你可以把这个命令保存为一个别名,方便以后使用,在你的~/.bashrc或~/.zshrc文件中添加一行:alias mytree="find . -type d -printf \"%P\\n\" | sed -e 's;[^/]*/;|;g;s;|; |;g'"
之后你就可以直接输入
mytree来使用这个自定义的“树”命令了。
