Posso troncare i nomi di file lunghi nell'elenco di ls


10

Ho un numero di file con nomi molto lunghi. Per favore, c'è un modo per usare ls -C e troncare i nomi dei file per ottenere più colonne per una vista generale?

O c'è un modo migliore per ottenere un elenco compatto?

Risposte:


9

Potresti fare qualcosa del tipo:

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

esempio di colonne

(che è columnscon un sautogeno GNU). O:

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

esempio di colonna Usando columncome trovato su BSD o bsdmainutilssu Debian o suoi derivati.

zsh supporta anche la stampa di elementi in colonne, in modo da poter definire una funzione come:

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

E usalo come:

c 20 *.txt

Per stampare l'elenco di file txt in colonne, troncato a 20 caratteri.

E per renderlo un po 'più folle, potresti aggiungere:

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

In questo modo, puoi anche fare:

20 *

O anche:

8+8 *

esempio zsh


Fantastico, grazie. Sul mio sistema Fedora 12 ho usato ls | taglio -c1-20 | colonne -W "$ {COLONNE: -80}" e ho tutti i miei file su una schermata.
Harry Weston,

0

Supponendo uno schermo a 80 colonne, mi piace usare

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

inserisci qui la descrizione dell'immagine

usa ls -FCinvece per ordinare per recente


(Sidenote: il mio lsgià scorre perché è aliasato ls -CF --color | more -r. Non sono sicuro che sia la migliore pratica ...)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.