Puis-je tronquer les noms de fichiers longs dans la liste ls

10

J'ai un certain nombre de fichiers avec des noms très longs. S'il vous plaît, existe-t-il un moyen d'utiliser ls -C et de tronquer les noms de fichiers pour obtenir plus de colonnes pour une vue globale?

Ou existe-t-il un meilleur moyen d'obtenir une liste compacte?

Harry Weston
la source

Réponses:

9

Vous pourriez faire quelque chose comme:

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

exemple de colonnes

(c'est columnsavec un sde GNU autogen). Ou:

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

exemple de colonne Utilisation columntelle que trouvée sur les BSD ou dans bsdmainutilsDebian ou ses dérivés.

zsh prend également en charge l'impression des choses dans des colonnes, vous pouvez donc définir une fonction comme:

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

Et utilisez-le comme:

c 20 *.txt

Pour imprimer la liste des fichiers txt en colonnes, tronquées à 20 caractères.

Et pour le rendre un peu plus fou, vous pouvez ajouter:

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

De cette façon, vous pouvez également faire:

20 *

Ou même:

8+8 *

exemple zsh

Stéphane Chazelas
la source
Génial, merci. Sur mon système Fedora 12, j'ai utilisé le ls | coupe -c1-20 | colonnes -W "$ {COLUMNS: -80}" et j'ai obtenu tous mes fichiers sur un seul écran.
Harry Weston
0

En supposant un écran de 80 colonnes, j'aime utiliser

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

entrez la description de l'image ici

utiliser à la ls -FCplace pour trier par récence


(Sidenote: mon lsdéjà défile parce qu'il est aliasé ls -CF --color | more -r. Je ne suis pas sûr que ce soit la meilleure pratique ...)

Atav32
la source