10 个稳定版本
1.9.0 | 2024年7月27日 |
---|---|
1.8.0 | 2024年6月29日 |
1.6.0 | 2024年5月25日 |
1.5.0 | 2024年4月25日 |
1.1.0 | 2023年10月24日 |
297 在 文件系统 中
148 每月下载量
345KB
6.5K SLoC
Ex 目录列出工具
版本
- 1.0.0
- 初始版本。
- 1.1.0
- 在 Windows 上进行不区分大小写的匹配。
- 以绝对路径显示链接。
- 以文件或目录颜色显示链接。
- 在 Bash 中使用
LS_COLORS
变量。 - 接受多个
-t
选项。
- 1.2.0
- 从子目录中查找相对链接。
- 以零大小和时间显示坏链接。
- 使用
-tf
选项包括可执行文件。
- 1.3.0
- 使用
-od
选项按目录排序。 - 使用
--debug
选项显示文件深度。 - 使用
-i
选项进行其他错误修复。
- 使用
- 1.4.0
- 使命令完成功能工作。
- 1.5.0
- 以美观的方式打印文件大小和时间。
- 使用
-aa
选项可选地递归到隐藏目录。
- 1.6.0
- 使用
-i
选项更正父目录缩进。
- 使用
- 1.7.0
- 根据本地时间而不是 UTC 查找最近文件。
- 使用
-i
选项使用框线字符进行缩进。 - 在目录链接后添加尾随正斜杠或反斜杠。
- 不再使用
--debug
选项显示文件深度。
- 1.8.0
- 使用
--case
选项在 Windows 上强制进行区分大小写的匹配。 - 使用
--no-case
选项在 Linux 上强制进行不区分大小写的匹配。 - 使用短划线长选项名。
- 使用
- 1.9.0
- 使用
--utc
选项以 UTC 显示文件时间。 - 使用
--win-ver
选项在 Windows 上显示文件版本。
- 使用
简介
Ex 是一个列出目录内容的命令行工具。因此,它被设计为 ls
命令的替代品(但更容易使用)。
- The
ls
命令在 Bash 中(但更容易使用)。 - Bash 中的
find
命令(但更容易使用)。 - Windows 中的
dir
命令(但功能更强大,输出更美观)。
它旨在与 POSIX 壳命令管道一起工作。例如
- 如果写入控制台,则显示所有属性。
- 如果写入管道或文件,则隐藏属性,并转义文件名。
默认情况下,它将在当前目录中查找文件,并以文件类型(d
表示目录,l
表示链接,-
表示常规文件)和权限(r
表示可读,w
表示可写,x
表示可执行,对于所有者、组和其它)以及大小、年龄和扩展名列出。目录也会通过尾部的路径分隔符进行标识。
~/example $ ex
drwxr-xr-x 0 B 1 day files/
-rwxr--r-- 10 B 2 month .sh find.sh
欢迎提出功能请求,但这是一个我在日常工作语言中无法使用的爱好项目,所以我更愿意自己完成所有开发。
功能
在子目录中查找文件
如果使用选项 -s
或 --recurse
运行 Ex,则它将在子目录中查找文件。如果使用选项 -d
或 --depth
运行,则它将在最小和最大深度之间查找文件,其中深度 0 对应于当前目录。
- 使用
-s
在子目录中查找文件。 - 使用
-d4
或-d-4
查找深度为 4 的文件。 - 使用
-d2-4
查找深度为 2、3 或 4 的文件。 - 使用
-d2-
查找深度为 2 及以上的文件。
它在 Bash 中使用路径分隔符 /
,包括 Windows 上的 Git Bash。
~/example $ ex -s
-rwxr--r-- 10 B 2 month .sh find.sh
drwxr-xr-x 0 B 1 day files/
drwxr-xr-x 0 B 1 day files/colours/
-rwxr--r-- 20 B 3 month .sh files/colours/alpha.sh
-rw-r--r-- 30 B 4 month .txt files/colours/blue.txt
-rw-r--r-- 40 B 5 month .txt files/colours/green.txt
-rw-r--r-- 50 B 6 month .txt files/colours/red.txt
drwxr-xr-x 0 B 1 day files/numbers/
lrwxr--r-- 60 B 7 month .sh files/numbers/count.sh -> /home/username/numbers/count.sh
lrw-r--r-- 999 KB 8 month .gz files/numbers/googolplex.gz -> /home/username/numbers/googolplex.gz
lrw-r--r-- 0 B 9 month files/numbers/ordinals -> /home/username/numbers/ordinals/
drwxr-xr-x 0 B 1 day files/numbers/one two/
-rw-r--r-- 70 B 10 month .txt files/numbers/one two/"three" 'four'.txt
它在 Windows 上使用路径分隔符 \\
。
C:\Users\username\example> ex.exe -s
-rwxrwxrwx 10 B 2 month .sh find.sh
drwxrwxrwx 0 B 1 day files\
drwxrwxrwx 0 B 1 day files\colours\
-rwxrwxrwx 20 B 3 month .sh files\colours\alpha.sh
-rw-rw-rw- 30 B 4 month .txt files\colours\blue.txt
-rw-rw-rw- 40 B 5 month .txt files\colours\green.txt
-rw-rw-rw- 50 B 6 month .txt files\colours\red.txt
drwxrwxrwx 0 B 1 day files\numbers\
lrwxrwxrwx 60 B 7 month .sh files\numbers\count.sh -> C:\Users\username\numbers\count.sh
lrw-rw-rw- 999 KB 8 month .gz files\numbers\googolplex.gz -> C:\Users\username\numbers\googolplex.gz
lrw-rw-rw- 0 B 9 month files\numbers\ordinals -> C:\Users\username\numbers\ordinals\
drwxrwxrwx 0 B 1 day files\numbers\one two\
-rw-rw-rw- 70 B 10 month .txt files\numbers\one two\"three" 'four'.txt
它接受通配符,如 *.txt
,并提供如 .txt
的快捷方式,以简化输入。
~/example $ ex -s .txt
-rw-r--r-- 30 B 4 month .txt files/colours/blue.txt
-rw-r--r-- 40 B 5 month .txt files/colours/green.txt
-rw-r--r-- 50 B 6 month .txt files/colours/red.txt
-rw-r--r-- 70 B 10 month .txt files/numbers/one two/"three" 'four'.txt
在子目录中缩进文件
如果使用选项 -
或 --indent
运行 Ex,则它将在子目录中缩进文件。
~/example $ ex -si
-rwxr--r-- 10 B 2 month .sh find.sh
drwxr-xr-x 0 B 1 day files
drwxr-xr-x 0 B 1 day +- colours
-rwxr--r-- 20 B 3 month .sh | +- alpha.sh
-rw-r--r-- 30 B 4 month .txt | +- blue.txt
-rw-r--r-- 40 B 5 month .txt | +- green.txt
-rw-r--r-- 50 B 6 month .txt | \- red.txt
drwxr-xr-x 0 B 1 day \- numbers
lrwxr--r-- 60 B 7 month .sh +- count.sh -> /home/username/numbers/count.sh
lrw-r--r-- 999 KB 8 month .gz +- googolplex.gz -> /home/username/numbers/googolplex.gz
lrw-r--r-- 0 B 9 month +- ordinals -> /home/username/numbers/ordinals/
drwxr-xr-x 0 B 1 day \- one two
-rw-r--r-- 70 B 10 month .txt \- "three" 'four'.txt
隐藏文件和目录
默认情况下,Ex 会隐藏
- 如
.bashrc
之类的隐藏文件。 - 如
.git
之类的隐藏目录。 - Python 缓存目录
__pycache__
。
如果使用选项 -
或 --all-files
运行,则它会显示隐藏文件和目录。
~/example $ ex -d1 -a
-rwxr--r-- 10 B 2 month .sh find.sh
drwxr-xr-x 0 B 1 day .hidden/
drwxr-xr-x 0 B 1 day files/
drwxr-xr-x 0 B 1 day files/colours/
drwxr-xr-x 0 B 1 day files/numbers/
如果使用重复选项 -
运行,则它还会递归到隐藏目录中。
~/example $ ex -d1 -aa
-rwxr--r-- 10 B 2 month .sh find.sh
drwxr-xr-x 0 B 1 day .hidden/
-rwxr--r-- 15 B 1 day .dat .hidden/password.dat
-rwxr--r-- 15 B 1 day .dat .hidden/secret.dat
drwxr-xr-x 0 B 1 day files/
drwxr-xr-x 0 B 1 day files/colours/
drwxr-xr-x 0 B 1 day files/numbers/
大小写敏感的文件名匹配
默认情况下,Ex 在 Linux 上使用大小写敏感的文件名匹配,在 Windows(包括 Git Bash)上使用不区分大小写的匹配以匹配文件系统。如果使用选项 --case
或 --no-case
运行,则它将覆盖此行为。
按自然顺序排序文件
默认情况下,Ex 使用自然顺序对文件名进行排序。
~/ordered $ ex
-rw-rw-r-- 0 B 1 year .txt file8.txt
-rw-rw-r-- 0 B 1 year .txt file9.txt
-rw-rw-r-- 0 B 1 year .txt file10.txt
-rw-rw-r-- 0 B 1 year .txt file11.txt
-rw-rw-r-- 0 B 1 year .txt file98.txt
-rw-rw-r-- 0 B 1 year .txt file99.txt
-rw-rw-r-- 0 B 1 year .txt file100.txt
-rw-rw-r-- 0 B 1 year .txt file101.txt
按属性排序文件
默认情况下,Ex 在当前目录中先显示目录再显示文件,如果递归,则将目录及其子目录分组,并按文件名在这些组内排序。如果使用选项 -o
或 --order
运行,它将根据选项对文件和目录进行排序。
- 使用
-on
按文件名排序文件。 - 使用
-oe
按扩展名排序文件。 - 使用
-os
按大小(递增)排序文件。 - 使用
-os-
按大小(递减)排序文件。 - 使用
-ot
按时间(递增)排序文件。 - 使用
-ot-
按时间(递减)排序文件。 - 使用
-oest
先按扩展名排序,然后按大小排序,最后按时间排序文件。
例如
~/example $ ex -d2 -oes
drwxr-xr-x 0 B 1 day files/
drwxr-xr-x 0 B 1 day files/colours/
drwxr-xr-x 0 B 1 day files/numbers/
lrw-r--r-- 0 B 9 month files/numbers/ordinals -> /home/username/numbers/ordinals/
drwxr-xr-x 0 B 1 day files/numbers/one two/
lrw-r--r-- 999 KB 8 month .gz files/numbers/googolplex.gz -> /home/username/numbers/googolplex.gz
-rwxr--r-- 10 B 2 month .sh find.sh
-rwxr--r-- 20 B 3 month .sh files/colours/alpha.sh
lrwxr--r-- 60 B 7 month .sh files/numbers/count.sh -> /home/username/numbers/count.sh
-rw-r--r-- 30 B 4 month .txt files/colours/blue.txt
-rw-r--r-- 40 B 5 month .txt files/colours/green.txt
-rw-r--r-- 50 B 6 month .txt files/colours/red.txt
按名称排序文件
如果使用选项 -on
运行 Ex,它还会在括号中显示目录
~/example $ ex -s -on .sh
-rwxr--r-- 20 B 3 month .sh alpha.sh (files/colours)
lrwxr--r-- 60 B 7 month .sh count.sh (files/numbers) -> /home/username/numbers/count.sh
-rwxr--r-- 10 B 2 month .sh find.sh
按时间过滤文件
默认情况下,Ex 不论文件和目录的年龄如何都显示。如果使用选项 -r
或 --recent
运行,它将按修改时间过滤。
- 使用
-rh
包括一小时内修改的文件。 - 使用
-rd
包括一天内修改的文件。 - 使用
-rw2
包括两周内修改的文件。 - 使用
-rm6
包括六个月内修改的文件。 - 使用
-ry10
包括十年内修改的文件。
例如
~/example $ ex -s -rm5
Start 5 month
----------------------------
-rwxr--r-- 10 B 2 month .sh find.sh
drwxr-xr-x 0 B 1 day files/
drwxr-xr-x 0 B 1 day files/colours/
-rwxr--r-- 20 B 3 month .sh files/colours/alpha.sh
-rw-r--r-- 30 B 4 month .txt files/colours/blue.txt
-rw-r--r-- 40 B 5 month .txt files/colours/green.txt
drwxr-xr-x 0 B 1 day files/numbers/
drwxr-xr-x 0 B 1 day files/numbers/one two/
按类型过滤文件
默认情况下,Ex 不论类型如何都显示文件和目录。如果使用选项 -t
或 --type
运行,它将按类型过滤。
- 使用
-tf
包括文件。 - 使用
-td
包括目录。 - 使用
-tl
包括链接。
例如
~/example $ ex -s -td
drwxr-xr-x 0 B 1 day files/
drwxr-xr-x 0 B 1 day files/colours/
drwxr-xr-x 0 B 1 day files/numbers/
drwxr-xr-x 0 B 1 day files/numbers/one two/
~/example $ ex -s -tfl
-rwxr--r-- 10 B 2 month .sh find.sh
-rwxr--r-- 20 B 3 month .sh files/colours/alpha.sh
-rw-r--r-- 30 B 4 month .txt files/colours/blue.txt
-rw-r--r-- 40 B 5 month .txt files/colours/green.txt
-rw-r--r-- 50 B 6 month .txt files/colours/red.txt
lrwxr--r-- 60 B 7 month .sh files/numbers/count.sh -> /home/username/numbers/count.sh
lrw-r--r-- 999 KB 8 month .gz files/numbers/googolplex.gz -> /home/username/numbers/googolplex.gz
lrw-r--r-- 0 B 9 month files/numbers/ordinals -> /home/username/numbers/ordinals/
-rw-r--r-- 70 B 10 month .txt files/numbers/one two/"three" 'four'.txt
显示总大小
如果使用选项 --total
运行 Ex,它还会显示总文件大小以及文件和目录的数量。
~/example $ ex --total files/numbers/
drwxr-xr-x 0 B 1 day files/numbers/one two/
lrwxr--r-- 60 B 7 month .sh files/numbers/count.sh -> /home/username/numbers/count.sh
lrw-r--r-- 999 KB 8 month .gz files/numbers/googolplex.gz -> /home/username/numbers/googolplex.gz
lrw-r--r-- 0 B 9 month files/numbers/ordinals -> /home/username/numbers/ordinals/
----------------------------
Total 1 MB 3 files 1 directory
只显示路径
默认情况下,Ex 显示所有文件属性(除非写入管道或文件),以及文件大小和时间的格式化打印。如果使用选项 -x
或 --only-path
运行,它只显示目录和文件名。
~/example $ ex -sx
find.sh
files/
files/colours/
files/colours/alpha.sh
files/colours/blue.txt
files/colours/green.txt
files/colours/red.txt
files/numbers/
files/numbers/count.sh -> /home/username/numbers/count.sh
files/numbers/googolplex.gz -> /home/username/numbers/googolplex.gz
files/numbers/ordinals -> /home/username/numbers/ordinals/
files/numbers/one two/
files/numbers/one two/"three" 'four'.txt
如果使用重复选项 -xx
运行,它显示所有文件属性(即使写入管道或文件),并禁用文件大小和时间的格式化打印,显示本地时区的时间。
~/example $ ex -sxx
-rwxr--r-- 10 01-Nov-2023 00:00:00 .sh find.sh
drwxr-xr-x 0 31-Dec-2023 00:00:00 files/
drwxr-xr-x 0 31-Dec-2023 00:00:00 files/colours/
-rwxr--r-- 20 01-Oct-2023 00:00:00 .sh files/colours/alpha.sh
-rw-r--r-- 30 01-Sep-2023 00:00:00 .txt files/colours/blue.txt
-rw-r--r-- 40 01-Aug-2023 00:00:00 .txt files/colours/green.txt
-rw-r--r-- 50 01-Jul-2023 00:00:00 .txt files/colours/red.txt
drwxr-xr-x 0 31-Dec-2023 00:00:00 files/numbers/
lrwxr--r-- 60 01-Jun-2023 00:00:00 .sh files/numbers/count.sh -> /home/username/numbers/count.sh
lrw-r--r-- 999,999 01-May-2023 00:00:00 .gz files/numbers/googolplex.gz -> /home/username/numbers/googolplex.gz
lrw-r--r-- 0 01-Apr-2023 00:00:00 files/numbers/ordinals -> /home/username/numbers/ordinals/
drwxr-xr-x 0 31-Dec-2023 00:00:00 files/numbers/one two/
-rw-r--r-- 70 01-Mar-2023 00:00:00 .txt files/numbers/one two/"three" 'four'.txt
如果使用重复选项 -xx
和选项 -u
或 --utc
运行,它还会以 UTC 显示文件时间。
~/example $ ex -sxxu
-rwxr--r-- 10 01-Nov-2023 00:00:00Z .sh find.sh
drwxr-xr-x 0 31-Dec-2023 00:00:00Z files/
drwxr-xr-x 0 31-Dec-2023 00:00:00Z files/colours/
-rwxr--r-- 20 30-Sep-2023 23:00:00Z .sh files/colours/alpha.sh
-rw-r--r-- 30 31-Aug-2023 23:00:00Z .txt files/colours/blue.txt
-rw-r--r-- 40 31-Jul-2023 23:00:00Z .txt files/colours/green.txt
-rw-r--r-- 50 30-Jun-2023 23:00:00Z .txt files/colours/red.txt
drwxr-xr-x 0 31-Dec-2023 00:00:00Z files/numbers/
lrwxr--r-- 60 31-May-2023 23:00:00Z .sh files/numbers/count.sh -> /home/username/numbers/count.sh
lrw-r--r-- 999,999 30-Apr-2023 23:00:00Z .gz files/numbers/googolplex.gz -> /home/username/numbers/googolplex.gz
lrw-r--r-- 0 31-Mar-2023 23:00:00Z files/numbers/ordinals -> /home/username/numbers/ordinals/
drwxr-xr-x 0 31-Dec-2023 00:00:00Z files/numbers/one two/
-rw-r--r-- 70 01-Mar-2023 00:00:00Z .txt files/numbers/one two/"three" 'four'.txt
显示绝对路径
默认情况下,Ex 显示相对路径(除非在命令行上提供绝对路径)。如果使用选项 -q
或 --abs-path
运行,它显示绝对路径。
~/example $ ex -sq .txt
-rw-r--r-- 30 B 4 month .txt /home/username/example/files/colours/blue.txt
-rw-r--r-- 40 B 5 month .txt /home/username/example/files/colours/green.txt
-rw-r--r-- 50 B 6 month .txt /home/username/example/files/colours/red.txt
-rw-r--r-- 70 B 10 month .txt /home/username/example/files/numbers/one two/"three" 'four'.txt
显示 Windows 路径
默认情况下,在Windows的Git Bash中,Ex显示带有路径分隔符的目录/
,将D:\Path
转换为/d/Path
;但有时需要生成Windows路径以便复制粘贴到其他程序中。如果使用选项-w
或--win-path
运行,它将这样做
~/example $ ex -sqw .txt
-rw-rw-rw- 30 B 4 month .txt C:\Users\username\example\files\colours\blue.txt
-rw-rw-rw- 40 B 5 month .txt C:\Users\username\example\files\colours\green.txt
-rw-rw-rw- 50 B 6 month .txt C:\Users\username\example\files\colours\red.txt
-rw-rw-rw- 70 B 10 month .txt C:\Users\username\example\files\numbers\one two\"three" 'four'.txt
显示Windows版本
如果使用选项-v
或--win-ver
运行,Ex将显示可执行文件和DLL文件的版本
C:\Users\username\bin> ex.exe -v
-rw-rw-rw- 123 KB 1 month 2.1.0.999 .exe binary.exe
-rw-rw-rw- 45 KB 1 month 2.1.0.1001 .dll library.dll
-rw-rw-rw- 678 B 1 month .txt README.txt
Shell命令管道
如果通过Bash将管道连接到命令或文件,Ex将隐藏属性并转义文件名
~/example $ ex -s .txt | cat
files/colours/blue.txt
files/colours/green.txt
files/colours/red.txt
files/numbers/one\ two/\"three\"\ \'four\'.txt
如果使用选项-z
或--null-path
运行,它使用空字符作为分隔符
~/example $ ex -sz .txt | xargs -0 touch
命令行完成
如果使用选项--completion=bash
运行Ex,它将生成一个Bash完成脚本,可以从.bashrc
文件中调用
source <(/home/username/bin/ex --completion=bash)
如果使用选项--completion=ps
运行Ex,它将生成一个PowerShell完成脚本,可以从PowerShell的$PROFILE
文件中调用
C:\Users\username\bin\ex.exe --completion=ps | Out-String | Invoke-Expression
依赖项
~7–35MB
~507K SLoC