以人类可读格式的数字扩展

Sar*_*use 4 zsh wildcards

所以,我想在以文件名作为输入的控制台播放器中播放一些 MP3。我有以下文件,由我的 shell (zsh) 扩展的ls -1 *位置给出*

1 - Main title.mp3
10 - End title.mp3
2 - Intro.mp3 
...
Run Code Online (Sandbox Code Playgroud)

但很明显,我实际上希望如何订购它们是这样的:

1 - Main title.mp3
2 - Intro.mp3 
...
10 - End title.mp3
Run Code Online (Sandbox Code Playgroud)

我需要什么外壳扩展魔法才能做到这一点?

我知道我可以用一些聪明的管道得到同样的东西,sort -h但这不是一个真正的选择,因为我是一个懒惰的打字员。所以,除非我写了一个小的 shell 脚本来添加歌曲,否则我宁愿这样做,nyxmms2 add /path/to/dir/*.mp3为什么我正在研究如何在 zsh 的扩展中进行过滤……另外,我想知道这是否可行,因为它适用于还有很多其他情况——例如,日志文件或修订或......

Gil*_*il' 5

使用n glob 限定符

print -lr -- *.mp3(n)
Run Code Online (Sandbox Code Playgroud)

您可以通过设置该numeric_glob_sort选项来更改默认排序顺序。

setopt numeric_glob_sort
print -lr -- *.mp3
Run Code Online (Sandbox Code Playgroud)

如果您需要一种模式的字典顺序,而numeric_glob_sort可能有效,请取消nglob 限定符。

print -lr -- *(^n)
Run Code Online (Sandbox Code Playgroud)