Tiven

Tiven

博观而约取,厚积而薄发

天问的个人网站(天问博客),专注于Node.js、Vue.js、React、Vite、Npm、Nginx等大前端技术。不断学习新技术,记录日常开发问题,持续分享coding,极客开源,共同进步。生命不息,奋斗不止... [ hexo blog ]

MacOS 终端中使用 tree 命令,配置别名和传参


在 linux 上可以轻松使用 tree 命令查看目录结构,MacOS 没有自带 tree 命令,需要自己安装,或者使用 find 命令。

Mac tree

一、前言

在使用 git 上传代码到仓库时,有时候出现比较慢的情况,除了网络延迟,还有就是出现了比较大的文件,导致 push 变慢,所以就需要分析项目下所有文件的大小。

二、安装

1)使用 find 命令代替 tree 命令

  • 配置别名,在 .zshrc 中加入以下内容:
vim ~/.zshrc

# 加入内容
alias trees="find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'"
  • 更新配置
source ~/.zshrc

2)安装 tree 命令(推荐

  • 安装
brew install tree
  • 配置别名

配置别名可以默认带上一些常用参数,如下别名配置相当于省略了 -S -A -C 参数,会默认携带。

alias trees='tree -S -A -C $*'
  • 使用命令
# 使用别名命令
trees src -s

# 等价与
tree -S -A -C scr -s

3)使用 du 命令

du 命令只能显示当前一级目录或文件的大小,无法看到 tree 结构

  • 基本命令
du -hs *

# or
du -shc *

# 显示当前目录下所有文件(包含文件夹)大小,并排序
du -sh * | sort -rh

三、tree 常用参数

  -------清单选项-------
  -a 列出所有文件和目录。
  -d 仅仅列出目录名称。
  -f 打印显示每个文件的完整路径前缀。
  -L 后面跟数字,控制列出几级目录。
  --------文件选项---------
  -q 用"?"号取代控制字符,列出文件和目录名称。
  -N 直接列出文件和目录名称,包括控制字符。
  -Q 用双引号引用文件名。
  -p 列出文件的权限标示。
  -u 列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码。
  -g 列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码。
  -s 打印每个文件的字节大小。
  -------排序选项-------
  -v 按文本字母数字排序文件。
  -t 按上次修改时间对文件进行排序。
  -c 按上次状态更改时间对文件进行排序。
  -U 保留文件未排序。
  -r 反转排序的顺序。
  --dirsfirst列出文件之前的目录(-U禁用)。
  -------图形选项------
  -i 不要打印缩进线。
  -A 打印ANSI线图形缩进线。
  -S 使用CP437(控制台)图形缩进线打印。
  -n 始终关闭着色(-C覆盖)。
  -C 总是打开彩色。
  ------- XML / HTML / JSON选项-------
  -X 打印树的XML表示。
  -J 打印出树的JSON表示。
  -H baseHREF 以baseHREF作为顶层目录打印HTML格式。
  -T string     Replace the default HTML title and H1 header with string.
  ----其他选项----
  --version打印版本并退出。

四、输出 tree 文件

# txt 文件
trees src -s > tree.txt

# xml 文件
trees src -s -X > tree.xml

# html 文件
trees src -s -H baseHREF > tree.html

欢迎访问:天问博客