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 .
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.
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
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 .
le w (width) dont tu parles est une option de la commande pr
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 :
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 :
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 :
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:~$
couplé avec la commande pr et la sortie en fichier ce fameux ‹ w › ( 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 .