¿Puedo truncar nombres largos de archivo en el listado de ls

10

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?

Harry Weston
fuente

Respuestas:

9

Podrías hacer algo como:

ls | cut -c1-20 | columns -W "${COLUMNS:-80}"

ejemplo de columnas

( Eso es columnscon un sautogen de GNU). O:

ls | cut -c1-20 | column -c"${COLUMNS:-80}"

ejemplo de columna Utilizando columncomo se encuentra en BSD o en bsdmainutilsDebian 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 *

ejemplo de zsh

Stéphane Chazelas
fuente
Genial, gracias. En mi sistema Fedora 12 utilicé ls | corte -c1-20 | columnas -W "$ {COLUMNS: -80}" línea, y obtuve todos mis archivos en una pantalla.
Harry Weston
0

Suponiendo una pantalla de 80 columnas, me gusta usar

ls -F | perl -lne 's/(.{34}).*/$1... /s ; print' | column -x | more

ingrese la descripción de la imagen aquí

utilizar ls -FCen su lugar para ordenar por actualidad


(Nota al margen: mi lsya se desplaza porque tiene un alias ls -CF --color | more -r. No estoy seguro de que sea la mejor práctica ...)

Atav32
fuente