slh*_*hck 525

您也可以tree在 macOS 上获取该命令。如果你有Homebrew

brew install tree
Run Code Online (Sandbox Code Playgroud)

如果您没有安装 Homebrew,请尝试以下一种方法。


安装包管理器方法

按照这些网站上的说明安装HomebrewMacPortsFink。不要同时安装多个包管理器!

按照您安装的任何提示进行操作。

对于自制: brew install tree

对于 MacPort: sudo port install tree

对于芬克: fink install tree

从源方法安装

  1. 通过运行安装 Xcode 命令行工具xcode-select --install

  2. 下载tree源码

  3. 更改 Makefile 以使其正常工作,这也在下面@apuche 的回答中进行了解释。注释掉 Linux 选项并取消注释 macOS 选项就足够了。

  4. 然后,运行./configure,然后make

  5. 现在,您必须将tree二进制文件移动到可执行路径中的某个位置。例如:

     sudo mkdir -p /usr/local/bin
     sudo cp tree /usr/local/bin/tree
    
    Run Code Online (Sandbox Code Playgroud)
  6. 现在编辑~/.bash_profile以包括:

     export PATH="/usr/local/bin:$PATH"
    
    Run Code Online (Sandbox Code Playgroud)
  7. 重新加载 shell,现在which tree应该指向/usr/local/bin/tree.

  • @7stud 很多人知道一些用于非常简单的 CLI 任务的命令行工具,他们可能*不*知道如何编译软件。人们有时很难理解 `./configure` 和 `make` 究竟做了什么,以及为什么首先需要它们。或者他们不想处理它。或者阅读任何帮助文件,就此而言。他们宁愿做类似`apt-get install`的事情。如果您更喜欢从源代码安装(我个人也是如此),这很好,但您必须接受其他人甚至大多数普通计算机用户认为更容易的解决方案。 (3认同)
  • *人们有时很难理解 ./configure 和 make 到底做什么以及为什么首先需要它们* 我已经从源代码安装软件 15 年了,我不知道 `./configure` 和 `make 是什么` 做。我只知道这些是我安装软件所需执行的步骤。我盲目地阅读了 README 和 INSTALL 文件,然后按照它说的去做。 (2认同)

non*_*ity 45

不完全相同,但 Mac 上的一种快速方法是:

find .
Run Code Online (Sandbox Code Playgroud)

就是这样。它将以列表形式列出当前目录中的所有文件路径。

  • 我只对深入几层以显示目录结构感兴趣,因此`find . -type d -maxdepth 2` 对我有用 (4认同)

小智 26

或者,如果您的管理员不允许您安装任何brew, fink,port工具,您始终可以从源代码构建它:

curl -O ftp://mama.indstate.edu/linux/tree/tree-1.5.3.tgz
tar xzvf tree-1.5.3.tgz
cd tree-1.5.3/
ls -al
Run Code Online (Sandbox Code Playgroud)

编辑 Makefile 以注释 linux 部分并取消注释 osx 区域:

# Linux defaults:
#CFLAGS=-ggdb -Wall -DLINUX -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
#CFLAGS=-O2 -Wall -fomit-frame-pointer -DLINUX -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
#LDFLAGS=-s

# Uncomment for OS X:
CC=cc
CFLAGS=-O2 -Wall -fomit-frame-pointer -no-cpp-precomp
LDFLAGS=
XOBJS=strverscmp.o
Run Code Online (Sandbox Code Playgroud)

可选:强制彩色输出

当你在做的时候,如果你想强制树总是为输出着色,你总是可以编辑文件的main方法tree.c并在force_color=TRUE;之前添加setLocale(LC_TYPE,"");

最后点击make,你就完成tree了 mac 的构建。

肖恩·查普曼( Shaun Chapman)致敬,感谢他在博客上发表的原创文章。


小智 21

您可能应该使用homebrew。如果你这样做:

brew install tree
Run Code Online (Sandbox Code Playgroud)


Ahm*_*sud 20

tree本身没有正式的命令,但是您可以这样做:

将以下脚本保存到 /usr/local/bin/tree

#!/bin/bash

SEDMAGIC='s;[^/]*/;|____;g;s;____|; |;g'

if [ "$#" -gt 0 ] ; then
   dirlist="$@"
else
   dirlist="."
fi

for x in $dirlist; do
     find "$x" -print | sed -e "$SEDMAGIC"
done
Run Code Online (Sandbox Code Playgroud)

更改权限以便您可以运行它:

chmod 755 /usr/local/bin/tree 
Run Code Online (Sandbox Code Playgroud)

当然,您可能必须创建/usr/local/bin

sudo mkdir -p /usr/local/bin/tree 
Run Code Online (Sandbox Code Playgroud)

  • 我更喜欢这个 SED `SEDMAGIC='s;[^/]*/;|-- ;g;s;-- |; |;g'` 将子目录管道与父目录的第一个字母对齐,并使用破折号而不是下划线。 (2认同)

jwe*_*ich 6

使用find和的替代方法awk

#!/bin/bash
find . -print 2>/dev/null | awk '!/\.$/ { \
    for (i=1; i<NF; i++) { \
        printf("%4s", "|") \
    } \
    print "-- "$NF \
}' FS='/'
Run Code Online (Sandbox Code Playgroud)


小智 6

我在这里找到了一个简单的解决方案:http : //murphymac.com/tree-command-for-mac/

因此,将以下内容添加到您的.bashrc,.bash_profile或任何其他地方将使其工作:

alias tree="find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'"
Run Code Online (Sandbox Code Playgroud)

现在添加一个tree命令将打印如下:

# ~/my-html-app [13:03:45]$ tree
.
|____app.js
|____css
| |____main.css
| |____theme.css
|____index.html
Run Code Online (Sandbox Code Playgroud)