Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 12/03/2019, à 19:25

cristobal78

(resolu) changer une liste de mot verticale en une liste linéaire

Bonjour

je dispose d'un fichier appelé "liste" qui contient un nom de fichiers par ligne comme l'indique la commande cat :

cat liste

fichier1
fichier2
fichier3
fichier4

et je voudrais transfomer cette présentation verticale en un lecture horizontale comme ceci :

commande-truc-muche liste

fichier1 fichier2 fichier3 fichier4

afin de pouvoir les traiter ces fichiers à tour de rôle avec un "for fichier in listehorizontale do"

Y a t il une commande-truc-muche pour faire ça ?

Dernière modification par cristobal78 (Le 13/03/2019, à 17:54)


Laptop Lenovo Ubuntu 20.04 LTS / DELL Mint 20.2 - XFCE / Laptop HP Mint 20.2 - XFCE

Hors ligne

#2 Le 12/03/2019, à 19:45

pingouinux

Re : (resolu) changer une liste de mot verticale en une liste linéaire

Bonsoir,
Par exemple

while read fic; do echo "$fic"; done <liste

Hors ligne

#3 Le 12/03/2019, à 19:49

Watael

Re : (resolu) changer une liste de mot verticale en une liste linéaire

et bien évidemment, stocker une liste de fichiers dans un fichier temporaire est rarement requis/une bonne idée :

for f in ./fichier*; do echo "$f"; done

Dernière modification par Watael (Le 12/03/2019, à 19:50)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#4 Le 12/03/2019, à 20:18

cristobal78

Re : (resolu) changer une liste de mot verticale en une liste linéaire

@ pingouinux

 while read fic; do echo "$fic"; done <liste

fichier1
fichier2
fichier3
fichier4

donc j'ai bien lu la liste mais elle reste "verticale"


@watael

Ça je ne savais pas. merci de l'info.
Cela dit voilà pourquoi je fais un fichier temporaire (liste) contenant des noms de fichiers "empilés".

J'ai écrit un script (nemo script placé dans .local/share/nemo/scripts) qui me permet de sélectionner plusieurs fichiers pdf et de n'en faire qu'un seul.
Pour ça je fais :

pdftk "$@" output regroupe.pdf 

dans le quel "$@" représente par exemple "fichier1"  "fichier2" et "fichier3".

Ça marche mais la sélection par Ctrl Click dans l'explorateur sur les noms de fichiers à "empiler" ne permet pas de fixer un ordre.
Il semble -mais je n'en suis pas sur- que ce soit l'ordre alphabétique qui s'applique donc avec ce nemo script j'ai tjrs un fichier "regroupe" avec fichier1 au début puis fichier2 et fichier3 à la fin.

Pour pouvoir fixer l'ordre dans lequel je veux assembler les fichiers pdf (par ex. fichier1-fichier3-fichier2 ) j'ai eu l'idée de les sélectionner  tour de rôle dans cet ordre et de les stocker en remplissant un liste.

Ensuite remplacer ces lignes verticales par une ligne de noms séparés par un espace est ce que je cherche à faire pour pouvoir les traiter, comme dit plus haut, avec un for i in liste horizontale do ...


Laptop Lenovo Ubuntu 20.04 LTS / DELL Mint 20.2 - XFCE / Laptop HP Mint 20.2 - XFCE

Hors ligne

#5 Le 12/03/2019, à 20:25

pingouinux

Re : (resolu) changer une liste de mot verticale en une liste linéaire

cristobal78 #4 a écrit :

donc j'ai bien lu la liste mais elle reste "verticale"

Si, comme je l'ai compris, tu veux simplement faire une boucle sur tous les fichiers pour les traiter, il est inutile d'en faire une liste horizontale. Il te suffit de remplacer le echo de mon exemple par le traitement que tu veux effectuer.

Hors ligne

#6 Le 12/03/2019, à 20:26

Watael

Re : (resolu) changer une liste de mot verticale en une liste linéaire

avant d'aller plus loin, acquiers d'abord des certitudes sur l'ordre dans lequel nemo passe les fichiers sélectionnés à un script.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#7 Le 12/03/2019, à 20:37

pingouinux

Re : (resolu) changer une liste de mot verticale en une liste linéaire

Si tes noms de fichiers ne contiennent pas d'espaces ni de caractères fantaisistes, ceci te donnera une liste "horizontale" :

tr "\n" " " <liste

ou bien

echo $(cat liste)

Dernière modification par pingouinux (Le 13/03/2019, à 07:38)

Hors ligne

#8 Le 12/03/2019, à 20:58

Watael

Re : (resolu) changer une liste de mot verticale en une liste linéaire

une partie avec nemo, une partie à la main, une partie en script... quand on est si bien sur la ligne de commande.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#9 Le 13/03/2019, à 17:54

cristobal78

Re : (resolu) changer une liste de mot verticale en une liste linéaire

ok c'est bon avec la cde de Pingouinux (Merci !!) à savoir :

echo $(cat liste)

Mais il faut, comme précisé par lui, que les noms de fichiers ne contiennent pas d'espaces !
Ça tombe bien car aucun de mes fichiers ne contient d'espace dans son nom.


Laptop Lenovo Ubuntu 20.04 LTS / DELL Mint 20.2 - XFCE / Laptop HP Mint 20.2 - XFCE

Hors ligne

#10 Le 13/03/2019, à 18:59

Watael

Re : (resolu) changer une liste de mot verticale en une liste linéaire

/me puke

--
il me faut des vacances.

Dernière modification par Watael (Le 13/03/2019, à 19:19)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne