Aitter's Blog

MAC终端中安装命令行工具TREE

通常我们在使用命令行工具时,习惯性的会查看当前文件下的目录结构和文件,tree命令很好的帮我们解决了这个问题,但是在liunx和mac系统下没有这个命令,在Windows中,系统有自带的tree命令。

两种方式

下面我们在Mac OSX中安装 tree 命令

方法一:我们可以写一个alias 到~/.zshrc下

alias tree="find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'"

使用 source .zshrc 更新配置
缺点是没有层级参数配置,会递归显示所有文件,包括隐藏文件

方法二:安装第三方的 tree 命令

修改编译配置

下载解压后,打开目录下的Makefile文件,修改第 55 行,将mac OS X的配置注释打开

# Uncomment for OS X:
CC=cc
CFLAGS=-O2 -Wall -fomit-frame-pointer -no-cpp-precomp
LDFLAGS=
MANDIR=/usr/share/man/man1
OBJS+=strverscmp.o

配置快捷命令

使用make命令编译(前提是你已经安装了Xcode命令行工具,如果没有,请在终端中执行”xcode-select –install”来安装。)
编译完成后会在目录下生成tree命令的二进制文件,拷贝到/usr/local/bin/目录下

sudo cp tree /usr/local/bin/

打开 ~/.zshrc 文件,在最后添加别名,保存关闭

alias tree="/usr/local/bin/tree"

使用命令source .zshrc更新配置
然后就可以畅快的使用tree了

常用命令

tree -L 1 显示当前目录下的1级目录
tree -L 2 显示当前目录下的2级目录结构
tree -a 显示当前目录所有的目录结构

帮助说明

~ tree --help
usage: tree [-acdfghilnpqrstuvxACDFJQNSUX] [-H baseHREF] [-T title ]
[-L level [-R]] [-P pattern] [-I pattern] [-o filename] [--version]
[--help] [--inodes] [--device] [--noreport] [--nolinks] [--dirsfirst]
[--charset charset] [--filelimit[=]#] [--si] [--timefmt[=]<f>]
[--sort[=]<name>] [--matchdirs] [--ignore-case] [--] [<directory list>]
------- Listing options -------
-a All files are listed.
-d List directories only.
-l Follow symbolic links like directories.
-f Print the full path prefix for each file.
-x Stay on current filesystem only.
-L level Descend only level directories deep.
-R Rerun tree when max dir level reached.
-P pattern List only those files that match the pattern given.
-I pattern Do not list files that match the given pattern.
--ignore-case Ignore case when pattern matching.
--matchdirs Include directory names in -P pattern matching.
--noreport Turn off file/directory count at end of tree listing.
--charset X Use charset X for terminal/HTML and indentation line output.
--filelimit # Do not descend dirs with more than # files in them.
--timefmt <f> Print and format time according to the format <f>.
-o filename Output to file instead of stdout.
-------- File options ---------
-q Print non-printable characters as '?'.
-N Print non-printable characters as is.
-Q Quote filenames with double quotes.
-p Print the protections for each file.
-u Displays file owner or UID number.
-g Displays file group owner or GID number.
-s Print the size in bytes of each file.
-h Print the size in a more human readable way.
--si Like -h, but use in SI units (powers of 1000).
-D Print the date of last modification or (-c) status change.
-F Appends '/', '=', '*', '@', '|' or '>' as per ls -F.
--inodes Print inode number of each file.
--device Print device ID number to which each file belongs.
------- Sorting options -------
-v Sort files alphanumerically by version.
-t Sort files by last modification time.
-c Sort files by last status change time.
-U Leave files unsorted.
-r Reverse the order of the sort.
--dirsfirst List directories before files (-U disables).
--sort X Select sort: name,version,size,mtime,ctime.
------- Graphics options ------
-i Don't print indentation lines.
-A Print ANSI lines graphic indentation lines.
-S Print with CP437 (console) graphics indentation lines.
-n Turn colorization off always (-C overrides).
-C Turn colorization on always.
------- XML/HTML/JSON options -------
-X Prints out an XML representation of the tree.
-J Prints out an JSON representation of the tree.
-H baseHREF Prints out HTML format with baseHREF as top directory.
-T string Replace the default HTML title and H1 header with string.
--nolinks Turn off hyperlinks in HTML output.
---- Miscellaneous options ----
--version Print version and exit.
--help Print usage and this help message and exit.
-- Options processing terminator.
➜ ~