Como colunino qualquer entrada ls
não colunada como faz?
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 column
(por exemplo, cada arquivo em uma linha), ela preencherá todas as linhas da mesma largura, para que 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 do exemplo. Estou procurando uma solução para colocar em coluna outras coisas no final.)
Como posso colunizar qualquer saída com uma largura de coluna variável?
column -c
_n
-x`, mas encaixar a saída no menor número possível de colunas da tela, em vez de preencher a largura especificada". Isso está correto?ls
gerencia). Talvez a gente encontrar a solução, se olharmos para o código fonte do código fonte dols
comando no coreutilsRespostas:
Obrigado @ rubo77 por perguntar isso, é um ótimo exercício. Para mim, foi com erros pontuais que o inglês é o Tough Stuff, o ritmo estragado: ficou divertido, rápido, mesmo que o próprio algoritmo aqui seja bastante simples.
[edição final: movida para https://github.com/jthill/columnate/blob/master/columnate , bug corrigido, implementado em linhas principais. ]
fonte
time ls | sort | columnate COLUMNS=$COLUMNS
Algo próximo à saída de
ls
:fonte