Tengo varios archivos con nombres muy largos. Por favor, ¿hay alguna manera de usar ls -C y truncar los nombres de archivo para obtener más columnas para una vista general?
¿O hay una mejor manera de obtener una lista compacta?
Tengo varios archivos con nombres muy largos. Por favor, ¿hay alguna manera de usar ls -C y truncar los nombres de archivo para obtener más columnas para una vista general?
¿O hay una mejor manera de obtener una lista compacta?
Respuestas:
Podrías hacer algo como:
ls | cut -c1-20 | columns -W "${COLUMNS:-80}"
( Eso es columns
con un s
autogen de GNU). O:
ls | cut -c1-20 | column -c"${COLUMNS:-80}"
Utilizando column
como se encuentra en BSD o en bsdmainutils
Debian o sus derivados.
zsh
también tiene soporte para imprimir cosas en columnas, por lo que podría definir una función como:
setopt extendedglob
c() print -rC$[COLUMNS/(($1)+2)] -- "${(M)@[2,-1]##?(#c0,$[$1])}"
Y úsalo como:
c 20 *.txt
Para imprimir la lista de archivos txt en columnas, truncada a 20 caracteres.
Y para hacerlo un poco más loco, podría agregar:
command_not_found_handler() {(($1)) && c "$@"}
De esa manera, también puedes hacer:
20 *
O incluso:
8+8 *
Suponiendo una pantalla de 80 columnas, me gusta usar
ls -F | perl -lne 's/(.{34}).*/$1... /s ; print' | column -x | more
utilizar ls -FC
en su lugar para ordenar por actualidad
(Nota al margen: mi ls
ya se desplaza porque tiene un alias ls -CF --color | more -r
. No estoy seguro de que sea la mejor práctica ...)