Posso truncar nomes de arquivos longos na lista ls

10

Eu tenho vários arquivos com nomes muito longos. Por favor, existe uma maneira de usar ls -C e truncar os nomes dos arquivos para obter mais colunas para uma visão geral?

Ou existe uma maneira melhor de obter uma listagem compacta?

Harry Weston
fonte

Respostas:

9

Você poderia fazer algo como:

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

exemplo de colunas

(isso é columnscom um sdo GNU autogen). Ou:

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

exemplo de coluna Usando columncomo encontrado nos BSDs ou no bsdmainutilsDebian ou seus derivados.

zsh também tem suporte para imprimir itens em colunas, para que você possa definir uma função como:

setopt extendedglob
c() print -rC$[COLUMNS/(($1)+2)] -- "${(M)@[2,-1]##?(#c0,$[$1])}"

E use-o como:

c 20 *.txt

Para imprimir os arquivos txt da lista em colunas, truncado para 20 caracteres.

E para torná-lo um pouco mais louco, você pode adicionar:

command_not_found_handler() {(($1)) && c "$@"}

Dessa forma, você também pode fazer:

20 *

Ou até:

8+8 *

exemplo zsh

Stéphane Chazelas
fonte
Brilhante, obrigado. No meu sistema Fedora 12 eu usei o ls | corte -c1-20 | colunas -W "$ {COLUMNS: -80}" e obtive todos os meus arquivos em uma tela.
Harry Weston
0

Supondo uma tela de 80 colunas, eu gosto de usar

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

insira a descrição da imagem aqui

use ls -FCpara ordenar por tempo recente


(Sidenote: meus lsjá rolam porque é um alias ls -CF --color | more -r. Não tenho certeza de que é uma prática recomendada ...)

Atav32
fonte