¿Cómo puedo columnastear cualquier entrada ls
no acumulada como hace?
ls
está creando una tabla optimizada con un ancho mínimo para cada fila, por ejemplo:
ls
2 dsao file with space with
5 e g wsdl-rubo-6cb0f1a9086e80c
d file leading space
pero si introduzco la salida en column
(por ejemplo, cada archivo en una línea), rellena cada fila del mismo ancho, por lo que se ajusta al ancho de la pantalla:
for i in *; do echo "$i"; done | column
2 file with space
5 g
d leading space
dsao with
e wsdl-rubo-6cb0f1a9086e80c
file
(Utilizo solo la lista de archivos aquí para generar el mismo resultado que en el ejemplo, estoy buscando una solución para columnatizar otras cosas al final).
¿Cómo puedo colunnizar cualquier salida con un ancho de col variable?
column -c
_n
-x`, pero ajustar la salida en la menor cantidad posible de columnas de pantalla en lugar de llenar el ancho especificado". ¿Es esto correcto?ls
maneja). Tal vez encontremos la solución, si buscamos en el código fuente del código fuente dells
comando en coreutilsRespuestas:
Gracias @ rubo77 por preguntar esto, es un gran ejercicio. Para mí fue a errores fuera de uno lo que el inglés es Tough Stuff es al ritmo fallido: se volvió divertido, rápido, a pesar de que el algoritmo aquí es bastante simple.
[edición final: se movió a https://github.com/jthill/columnate/blob/master/columnate , error corregido, se implementó la fila principal. ]
fuente
time ls | sort | columnate COLUMNS=$COLUMNS
Algo cercano a la salida de
ls
:fuente