# Commande ls : affichage avec un nombre de colonnes donné

**URL:** <https://www.debian-fr.org/t/commande-ls-affichage-avec-un-nombre-de-colonnes-donne/87156>\
**Category:** Support Debian\
**Created:** [Septembre 16, 2022, 11:22 UTC](https://www.debian-fr.org/t/commande-ls-affichage-avec-un-nombre-de-colonnes-donne/87156 "2022-09-16T11:22:13Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![zao](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/z/ce7236/32.png) [@zao](https://www.debian-fr.org/u/zao)\
**Post date:** [Septembre 16, 2022, 11:22 UTC](https://www.debian-fr.org/t/commande-ls-affichage-avec-un-nombre-de-colonnes-donne/87156/1 "2022-09-16T11:22:13Z")

</div>

bonjour ,  
j’ai besoin de sortir la liste de mon dossier Documents sur 3 colonnes dans un fichier texte en passant par une console en plein écran . Je rencontre 2 problèmes distincts :

- une sortie dans un fichier .txt ne reflète pas ce que je vois dans la console ( cf ci-dessous )

- je voudrais pouvoir ajuster le nombre de colonnes affichées avec l’option **ls -w** ou une autre plus adaptée .

Un test donne :

1- pb1 = **ls Documents \> D.txt** = sortie en 4 colonnes dans la console mais en 1 seule colonne dans le fichier **D.txt**

2- pb2 = **ls -w 3 Documents \> D.txt** = sortie sur 1 colonne dans la console  
et 1 colonne dans **D.txt**. J’interroge le manuel qui m’indique que -w est une largeur :  
_-w, --width=COLONNES  
définir la largeur de l’affichage à COLONNES._

mais de quelle largeur s’agit-il ?

Solutions provisoires :

- pb1 = pas de sortie **\> D.txt** mais C/C de l’écran de la console et je retrouve bien les 4 colonnes dans le fichier **D.txt**
- pb2 = modification de la largeur de la console et j’arrive bien à avoir mes 3 colonnes

mais je pense qu’il doit exister des solutions plus directes , non ?

ps : -w = largeur de l’affichage et donc en supposant que -w est une fraction de la largeur totale (= ?) de la console et en fixant non pas 3 mais 300 ( par essais successifs ) j’arrive bien à 3 colonnes mais la présentation est désastreuse .

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Septembre 16, 2022, 11:59 UTC](https://www.debian-fr.org/t/commande-ls-affichage-avec-un-nombre-de-colonnes-donne/87156/2 "2022-09-16T11:59:11Z")

</div>

Bonjour

La valeur donnée à l’option `width` de la commande `ls` permet de spécifier le nombre maximum de caractères qui seront affichables dans une ligne de sortie de cette commande,

… ce qui permet d’imposer cette valeur sans tenir compte de la valeur de la variable d’environnement `COLUMNS` qui dépendrait de la largeur de la fenêtre de terminal utilisé (et de la taille de la police de caractère utilisée pour l’affichage).

* * *

Mais de toutes façons, si le flux de sortie de la commande `ls` est redirigé vers un fichier,  
la commande `ls` ne tiendra pas compte de la valeur qui aurait été assignée à cette option ni d’ailleurs de la valeur de la variable COLUMNS  
puisqu’il n’y aura pas d’affichage dans une fenêtre de terminal.

---

<div class="post-metadata">

**Author:** ![Sputnik93](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/s/35a633/32.png) [@Sputnik93](https://www.debian-fr.org/u/Sputnik93)\
**Post date:** [Septembre 16, 2022, 12:30 UTC](https://www.debian-fr.org/t/commande-ls-affichage-avec-un-nombre-de-colonnes-donne/87156/3 "2022-09-16T12:30:52Z")

</div>

Bonjour,

utilise `pr`:

```auto
sputnik@debian:~/test-dir$ ls
file10.txt file11.txt file12.txt file13.txt file14.txt file15.txt file16.txt file17.txt file1.txt file2.txt file3.txt file4.txt file5.txt file6.txt file7.txt file8.txt file9.txt
sputniks@debian:~/test-dir$ ls | pr -3t
file10.txt file16.txt file5.txt
file11.txt file17.txt file6.txt
file12.txt file1.txt file7.txt
file13.txt file2.txt file8.txt
file14.txt file3.txt file9.txt
file15.txt file4.txt

```

---

<div class="post-metadata">

**Author:** ![zao](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/z/ce7236/32.png) [@zao](https://www.debian-fr.org/u/zao)\
**Post date:** [Septembre 16, 2022, 12:57 UTC](https://www.debian-fr.org/t/commande-ls-affichage-avec-un-nombre-de-colonnes-donne/87156/4 "2022-09-16T12:57:58Z")

</div>

> [@Sputnik93](#):
>
> utilise `pr` :
> 
> ```auto
> sputnik@debian:~/test-dir$ ls
> file10.txt file11.txt file12.txt file13.txt file14.txt file15.txt file16.txt file17.txt file1.txt file2.txt file3.txt file4.txt file5.txt file6.txt file7.txt file8.txt file9.txt
> sputniks@debian:~/test-dir$ ls | pr -3t
> 
> ```

impeccable et en plus je peux sortir en fichier qui garde bien la bonne disposition en colonnes . Merci bien .

ps : j’avais entre-temps trouvé une solution en 2 étapes avec en dernier la commande _column -c 180 D.txt_ où 180 est une valeur trouvée par essais successifs

---

<div class="post-metadata">

**Author:** ![zao](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/z/ce7236/32.png) [@zao](https://www.debian-fr.org/u/zao)\
**Post date:** [Septembre 16, 2022, 5:41 UTC](https://www.debian-fr.org/t/commande-ls-affichage-avec-un-nombre-de-colonnes-donne/87156/5 "2022-09-16T17:41:32Z")

</div>

> [@anon29980398](#):
>
> La valeur donnée à l’option `width` de la commande `ls` permet de spécifier le nombre maximum de caractères qui seront affichables dans une ligne de sortie de cette commande,
> 
> … ce qui permet d’imposer cette valeur sans tenir compte de la valeur de la variable d’environnement `COLUMNS` qui dépendrait de la largeur de la fenêtre de terminal utilisé

j’ai attendu d’avoir le temps de pouvoir tenter de décrypter tout ça .

Pour moi $COLUMNS = 90 avec la largeur habituelle de ma console et passe à 190 en plein écran

En mode normal si je fixe w = 60 le nom d’un dossier ad hoc contenant 90 minuscules s’affiche sur toute une ligne ; idem si w=120 . Donc 1 caractère (=/) 1 minuscule , sans parler des majuscules ! ce qui fait que fixer la valeur de ce (-w) pour obtenir un résultat donné n’a pas l’air très évident .

> Mais de toutes façons, si le flux de sortie de la commande `ls` est redirigé vers un fichier,  
> la commande `ls` ne tiendra pas compte de la valeur qui aurait été assignée à cette option

ok , je suppose que voilà la raison de la valeur unique du nombre de colonnes affichées (non modifiable ?) lors d’une sortie fichier .

merci pour ces explications qui ne me sont malheureusement pas encore pleinement accessibles .

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Septembre 16, 2022, 9:57 UTC](https://www.debian-fr.org/t/commande-ls-affichage-avec-un-nombre-de-colonnes-donne/87156/6 "2022-09-16T21:57:58Z")

</div>

> [@zao](#):
>
> … En mode normal si je fixe w = 60 …

le `w` (_`width`_) dont tu parles est une option de la commande `pr`

> [@zao](#):
>
> … Donc 1 caractère (=/) 1 minuscule , sans parler des majuscules ! …

Que ce soit en majuscule ou en minuscule, la police de caractère utilisée dans la fenêtre de terminal est une police a chasse fixe \<=\> chacun des caractères occupe la même largeur.

* * *

Par défaut, la commande `pr` considère qu’il n’y aura pas plus de 72 caractères dans une ligne  
ce qui fait que si tu veux faire afficher 3 colonnes, les noms de fichiers qui seront plus longs que 24 caractères seront tronqués \<=\> on ne verra pas la fin du nom du fichier.

Par exemple, avec les noms des fichiers suivants :

```plaintext
michel@deb114x:~$ ls Ca*
'Caché puis retrouvé.txt' Cadenas.txt 'Capture d’écran_2022-08-06_06-38-00.png' 'Capture d’écran_2022-08-07_11-38-00.png' 'Capture d’écran_2022-08-07_19-37-25.png'
michel@deb114x:~$ 

```

Si je laisse le paramètre `w` à sa valeur par défaut,  
les noms des fichiers affichés seront tronqués,  
ça va donner :

```plaintext
michel@deb114x:~$ ls Ca* | pr -3t
Caché puis retrouvé.txt	Capture d’écran_2022-08-0 Capture d’écran_2022-08-0
Cadenas.txt Capture d’écran_2022-08-0
michel@deb114x:~$ 

```

Il me faudra donc donner une valeur assez grande au paramètre `w`  
si je ne veux que mes noms de fichier affichés ne soient pas tronqués :

```plaintext
michel@deb114x:~$ ls Ca* | pr -3t -w113
Caché puis retrouvé.txt Capture d’écran_2022-08-06_06-38-00.png Capture d’écran_2022-08-07_19-37-25.png
Cadenas.txt Capture d’écran_2022-08-07_11-38-00.png
michel@deb114x:~$ 

```

---

<div class="post-metadata">

**Author:** ![zao](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/z/ce7236/32.png) [@zao](https://www.debian-fr.org/u/zao)\
**Post date:** [Septembre 17, 2022, 8:52 UTC](https://www.debian-fr.org/t/commande-ls-affichage-avec-un-nombre-de-colonnes-donne/87156/7 "2022-09-17T08:52:31Z")

</div>

> [@anon29980398](#):
>
> Il me faudra donc donner une valeur assez grande au paramètre `w`  
> si je ne veux que mes noms de fichier affichés ne soient pas tronqués :

couplé avec la commande **pr** et la sortie en fichier ce fameux ‹&nbsp;w&nbsp;› ( je n’avais pas pensé à l’utiliser avec **pr** ) que je fixe d’une manière purement empirique me permet d’avoir une présentation finale aux petits ognons qui peut être adaptée aux différentes longueurs des noms de fichiers .

sinon j’avais essayé du fait maison mais c’est un peu long comme commande et elle me sort un fichier intermédiaire inutile :  
**ls Documents \> D.text && column - c (w) D.txt \> D1.text** qui, a priori , me donne un résultat similaire . La commande **pr** est quand même plus compacte et elle ne donne pas de fichier inutile . Donc je garde .
