#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.
En 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
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.
En 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.
En 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.
En ligne