Como faço para colocar em coluna uma lista de itens com largura mínima?

8

Como faço para colocar em coluna qualquer entrada não cotada como ls ?

ls está criando uma tabela otimizada com largura mínima para cada linha, por exemplo:

ls

2  dsao  file with space  with
5  e     g                wsdl-rubo-6cb0f1a9086e80c
d  file   leading space

mas se eu alimentar a saída em column (por exemplo, cada arquivo em uma linha), ele preencherá todas as linhas com a mesma largura, para que ele se ajuste à largura da tela:

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

2                               file with space                          
5                               g                                        
d                                leading space                           
dsao                            with                                     
e                               wsdl-rubo-6cb0f1a9086e80c                
file

(Eu uso apenas a lista de arquivos aqui para gerar a mesma saída como exemplo, estou procurando por uma solução para colocar em coluna outras coisas no final.)

Como posso colunmar qualquer saída com uma variável col-width?

    
por rubo77 21.11.2013 / 02:51

2 respostas

5

Obrigado @ rubo77 por perguntar isso, é um ótimo exercício. Para mim, foi para erros off-one, o que o Inglês é Tough Stuff é para o ritmo fracassado: ele ficou divertido, rápido, mesmo que o algoritmo em si seja bem simples.

[edição final: movido para link , bug corrigido, linha principal implementada. ]

    
por 22.11.2013 / 01:54
3

Algo próximo da saída de ls :

for i in *; do echo -en "${i}\t"; done; echo
    
por 21.11.2013 / 06:49

Tags