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?
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:
Potresti fare qualcosa del tipo:
ls | cut -c1-20 | columns -W "${COLUMNS:-80}"
(che è columns
con un s
autogeno GNU). O:
ls | cut -c1-20 | column -c"${COLUMNS:-80}"
Usando column
come trovato su BSD o bsdmainutils
su 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 *
Supponendo uno schermo a 80 colonne, mi piace usare
ls -F | perl -lne 's/(.{34}).*/$1... /s ; print' | column -x | more
usa ls -FC
invece per ordinare per recente
(Sidenote: il mio ls
già scorre perché è aliasato ls -CF --color | more -r
. Non sono sicuro che sia la migliore pratica ...)