#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
fichier4et je voudrais transfomer cette présentation verticale en un lecture horizontale comme ceci :
commande-truc-muche liste
fichier1 fichier2 fichier3 fichier4afin 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)
un fixe DELL, 1 laptop LDLC tous 2 sous 16.04LTS et 1 laptop Lenovo sous 18.04 LTS
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 <listeHors 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"; doneDernière modification par Watael (Le 12/03/2019, à 19:50)
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
fichier4donc 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 ...
un fixe DELL, 1 laptop LDLC tous 2 sous 16.04LTS et 1 laptop Lenovo sous 18.04 LTS
Hors ligne
#5 Le 12/03/2019, à 20:25
- pingouinux

Re : (resolu) changer une liste de mot verticale en une liste linéaire
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.
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" " " <listeou 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.
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.
un fixe DELL, 1 laptop LDLC tous 2 sous 16.04LTS et 1 laptop Lenovo sous 18.04 LTS
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)
Welcome to sHell. · eval is evil.
Hors ligne