exa代替ls和tree

前言

exa 是用rust写的一个 ls 命令的替代品.
虽然速度比ls慢一些,但是支持多彩的显示和像tree一样的功能.
在排序上支持默认自然排序.
因此可以考虑用来替换一下ls和tree命令

ls的替代

exa对比ls

  • 色彩
  • 自然排序
  • exa不显示 ...
  • exa不显示文件夹的大小
    • 程序没必要每次显示文件夹下的大小,这样很浪费时间
    • ls显示的不是文件夹的实际大小,总是显示4k
  • exa自动选择文件大小的单位

ll

1
2
ls -lh
exa -l

la

1
2
ls -a
exa -a

lt

1
2
ls -lhtr
exa -l --sort=modified

但是注意有时 ls -tr | catexa --sort=modified -1 的输出不同
此时应参考 ls -ltrexa -l --sort=modified 的结果.

tree的替代

tree的某些选项其实和ls重复,比如 -a,
tree的某些功能和ls重复,

  • 比如 -p 显示文件权限,
  • -f 显示文件完整路径.

但tree可以匹配需要显示的文件或定制输出成json等格式.

exa对比tree

  • exa默认不显示统计
  • exa文件名基本不会乱码
    • 不需要像tree -N | iconv -f xxx -t utf8
  • exa好像没有复杂的输出功能
    • 显示统计信息
    • 导出到json或xml
    • 根据文件数量决定是否打开文件夹
  • exa也没有tree快

基础使用

1
2
tree   --no-report
exa -T

只显示文件夹

1
2
tree   -d
exa -T -D

定义最大深度

1
2
tree   -L 1
exa -T -L 1