如何以最小宽度对项目列表进行分列?

rub*_*o77 8 ls bash

我如何像这样ls对任何未列明的输入进行列列?

ls 正在为每行创建一个具有最小宽度的优化表,例如:

ls

2  dsao  file with space  with
5  e     g                wsdl-rubo-6cb0f1a9086e80c
d  file   leading space
Run Code Online (Sandbox Code Playgroud)

但是如果我将输出输入column(例如,一行中的每个文件),它会将每一行填充相同的宽度,因此它适合屏幕宽度:

for i in *; do echo "$i"; done | column

2                               file with space                          
5                               g                                        
d                                leading space                           
dsao                            with                                     
e                               wsdl-rubo-6cb0f1a9086e80c                
file
Run Code Online (Sandbox Code Playgroud)

(我这里只使用文件列表来生成与示例相同的输出,我正在寻找这样的解决方案来最终将其他内容列成列。)

如何使用可变的 col-width 对任何输出进行 colunnize?

jth*_*ill 6

感谢@rubo77 提出这个问题,这是一个很好的练习。对我来说,英语是 Tough Stuff 的一个错误是拙劣的节奏:它变得有趣、快速,即使这里的算法本身非常简单。

[最终编辑:移至https://github.com/jthill/columnate/blob/master/columnate,错误修复,行优先实现。]