Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
Usage des "pipes" (débutant)
Envoyé par: balteo

Bonjour,

Je souhaite utiliser un pipe pour effectuer l'action suivante:

Imprimer le contenu d'un fichier sur mon xterm.

J'ai essayé celà:

find . -type f -name toto.txt |  cat

Il m'imprime le nom du fichier et non le contenu.:-(

locate toto.txt | cat

Il m'imprime rien du tout.... :-(

Quelqu'un peut t'il me dire où je me trompe?

Julien.

Poste le Wednesday 24 May 2006 23:03:28
Répondre     Citer    
Re: Usage des "pipes" (débutant)

Si tu veux sortir le contenu de tous les fichiers toto.txt dans l'arborescence courante, tu peux faire:
find . -type f -name toto.txt -exec cat '{}' \;

Celà étant, sous zsh, c'est bien plus simple
cat **/toto.txt(.)

Ça fait partie des raisons qui m'ont fait adopter zsh comme shell de commandes.

----

Basile STARYNKEVITCH

Membre de l'APRIL « promouvoir et défendre le logiciel libre » - adhérez vous aussi à l'APRIL!

Projet logiciel libre: RefPerSys

Poste le Wednesday 24 May 2006 23:16:52
Répondre     Citer    
Re: Usage des "pipes" (débutant)
Envoyé par: Sve@r

Citation
balteo
find . -type f -name toto.txt | cat
Il m'imprime le nom du fichier et non le contenu.
Là, tu demandes à "cat" d'afficher ce que "find" te renvoie. or, "find" te renvoie un nom de fichier donc tu affiches ce nom => logique

Citation
balteo
locate toto.txt | cat
Il m'imprime rien du tout....
idem message précédent. Tu affiches ce que "locate" te renvoie et "locate" te renvoie rien.

Citation
balteo
Quelqu'un peut t'il me dire où je me trompe?
Dans ta compréhension des pipes.
Un pipe sert juste à renvoyer la sortie standard d'une commande (ce qu'elle affiche à l'écran) dans l'entrée standard d'une autre (ce qu'elle attend du clavier)

Exemple: pwd |wc
pwd affiche à l'écran ton répertoire courant, wc compte le nb de caractères arrivant du clavier => ça te donnera le nb de caractères de ton répertoire courant.

Pour résoudre ton pb, la commande "find" possède une option pour lui dire "exécute une commande pour chaque fichier trouvé" donc c'est elle qui s'en occupe. si tu utilisais autre chose que find qui ne puisse pas faire ça (comme "locate"), il faudrait boucler sur chaque fichier donné par la commande, stocker le nom du fichier dans une variable et faire "cat <la variable>" => ex:
locate fichier |while read f
do
....cat $f
done
Cette structure nécessite quand-même un peu de compréhension du shell et des commandes => Cours de shell ici: [fr.lang.free.fr]


L'homme qui murmurait à l'oreille des pingouins
[fr.lang.free.fr]

Poste le Wednesday 24 May 2006 23:42:22
Répondre     Citer    
Re: Usage des "pipes" (débutant)
Envoyé par: balteo

Merci beaucoup pour l'explication détaillée!!
J.

Poste le Thursday 25 May 2006 00:45:46
Répondre     Citer    
Re: Usage des "pipes" (débutant)
Envoyé par: balteo

J'ai téléchargé le pdf.

Poste le Thursday 25 May 2006 00:46:41
Répondre     Citer    
Re: Usage des "pipes" (débutant)
Envoyé par: Mushroom

Citation
Sve@r
si tu utilisais autre chose que find qui ne puisse pas faire ça (comme "locate"), il faudrait boucler sur chaque fichier donné par la commande, stocker le nom du fichier dans une variable et faire "cat <la variable>"

... ou employer xargs qui sert à exécuter une commande en lui transmettant son entrée (celle de xargs) en paramètre :

locate fichier | xargs cat

;-)

Poste le Thursday 25 May 2006 11:45:19
Répondre     Citer    
Re: Usage des "pipes" (débutant)
Envoyé par: balteo

:-)

Poste le Thursday 25 May 2006 12:34:55
Répondre     Citer    
Re: Usage des "pipes" (débutant)
Envoyé par: Sve@r

Citation
Mushroom
... ou employer xargs qui sert à exécuter une
commande en lui transmettant son entrée (celle de
xargs) en paramètre :

locate fichier | xargs cat
C'est vrai !!! Je suis pas encore habitué à cette commande que je ne connais que depuis peu...:chef:


L'homme qui murmurait à l'oreille des pingouins
[fr.lang.free.fr]

Poste le Thursday 25 May 2006 13:00:33
Répondre     Citer    
Re: Usage des "pipes" (débutant)
Envoyé par: Mushroom

Citation
Sve@r
C'est vrai !!! Je suis pas encore habitué à cette commande que je ne connais que depuis peu...
Bon, je ne te cache pas que je ne l'emploie pas non plus à tour de bras... juste pour les slackbuilds et pour faire le malin ici...:-p

Poste le Friday 26 May 2006 10:28:56
Répondre     Citer    
Re: Usage des "pipes" (débutant)

Dans le meme ordre d'idée :

A la place de faire :
find . -type f -name toto.txt | cat

cat $( find . -type f -name toto.txt  )


--
Brugmans Frédéric

[www.brugmans.net]
[triathlon.sport-challenge.be]

Poste le Sunday 28 May 2006 11:48:34
Répondre     Citer    
Re: Usage des "pipes" (débutant)
Envoyé par: Sve@r

Citation
Frédéric Brugmans
Dans le meme ordre d'idée :

A la place de faire :
find . -type f -name toto.txt | cat

cat $( find . -type f -name toto.txt )

Euh oui... mais non.
Le sujet initial était quand-même "l'apprentissage du pipe" donc les solutions se doivent de mettre en oeuvre des pipes...

L'homme qui murmurait à l'oreille des pingouins
[fr.lang.free.fr]

Poste le Sunday 28 May 2006 22:27:32
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
Usage des "pipes" (débutant)
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons