j'aimerai reformater une liste de fichiers renvoyée
par find, dans l'esprit ça ressseblerai à ça :
> find / -name "*.txt" -exec echo {} | awk ' { print }' \;
évidemment, sous cette forme, ça ne marche pas.
Quelle est la forme canonique pour parvenir au bon résultat
( en passant par l'option -exec et non pas par un pipe après le find ) ?
Euh, c'est quoi la différence entre ça et la même chose en enlevant tout le -exec ? À mois que « find [...] -exec sh -c '...' ; » ne réponde à ta question ?
Euh, c'est quoi la différence entre ça et la même chose en enlevant tout
le -exec ? À mois que « find [...] -exec sh -c '...' ; » ne réponde à ta
question ?
Euh, c'est quoi la différence entre ça et la même chose en enlevant tout le -exec ? À mois que « find [...] -exec sh -c '...' ; » ne réponde à ta question ?
-- Marc Mezzarobba
JustMe
Stan a écrit
Bonjour,
j'aimerai reformater une liste de fichiers renvoyée
Je suppose qu'il y a autre chose qu'un simple print dans le script awk, mais que tu as simplifié l'exemple.
Bon, déjà, il faut terminer le -exec de la commande find (par ;) avant de rediriger sa sortie standard vers l'entrée standard d'une autre.
Donc : find . -exec echo {} ; | awk ' { print }'
Maintenant, note qu'il y a plus simple que « -exec echo {} ; », c'est le « -print » : find . -print | awk ' { print }'
Enfin, certaines versions de find ont un « -print » par défaut en l'absence de toute autre commande, ce qui donne : find . | awk ' { print }'
Quelle est la forme canonique pour parvenir au bon résultat ( en passant par l'option -exec et non pas par un pipe après le find ) ?
Rhâzut, je n'avais pas lu l'intérieur des parenthèses. Désolé. Alors tu peux passer par un script externe qui contiendra le « | » ; je ne pense pas qu'il existe une autre solution.
-- Olivier Miakinen
j'aimerai reformater une liste de fichiers renvoyée
par find, dans l'esprit ça ressseblerai à ça :
Je suppose qu'il y a autre chose qu'un simple print dans le script awk,
mais que tu as simplifié l'exemple.
Bon, déjà, il faut terminer le -exec de la commande find (par ;) avant
de rediriger sa sortie standard vers l'entrée standard d'une autre.
Donc :
find . -exec echo {} ; | awk ' { print }'
Maintenant, note qu'il y a plus simple que « -exec echo {} ; », c'est
le « -print » :
find . -print | awk ' { print }'
Enfin, certaines versions de find ont un « -print » par défaut en
l'absence de toute autre commande, ce qui donne :
find . | awk ' { print }'
Quelle est la forme canonique pour parvenir au bon résultat
( en passant par l'option -exec et non pas par un pipe après le find ) ?
Rhâzut, je n'avais pas lu l'intérieur des parenthèses. Désolé. Alors tu
peux passer par un script externe qui contiendra le « | » ; je ne pense
pas qu'il existe une autre solution.
Je suppose qu'il y a autre chose qu'un simple print dans le script awk, mais que tu as simplifié l'exemple.
Bon, déjà, il faut terminer le -exec de la commande find (par ;) avant de rediriger sa sortie standard vers l'entrée standard d'une autre.
Donc : find . -exec echo {} ; | awk ' { print }'
Maintenant, note qu'il y a plus simple que « -exec echo {} ; », c'est le « -print » : find . -print | awk ' { print }'
Enfin, certaines versions de find ont un « -print » par défaut en l'absence de toute autre commande, ce qui donne : find . | awk ' { print }'
Quelle est la forme canonique pour parvenir au bon résultat ( en passant par l'option -exec et non pas par un pipe après le find ) ?
Rhâzut, je n'avais pas lu l'intérieur des parenthèses. Désolé. Alors tu peux passer par un script externe qui contiendra le « | » ; je ne pense pas qu'il existe une autre solution.
-- Olivier Miakinen
Matthieu Moy
Olivier Miakinen <om+ writes:
Rhâzut, je n'avais pas lu l'intérieur des parenthèses. Désolé. Alors tu peux passer par un script externe qui contiendra le « | » ; je ne pense pas qu'il existe une autre solution.
Oui, ça a déjà été mentionné :
find . -exec sh -c "foo | bar" ;
-- Matthieu
Olivier Miakinen <om+news@miakinen.net> writes:
Rhâzut, je n'avais pas lu l'intérieur des parenthèses. Désolé. Alors tu
peux passer par un script externe qui contiendra le « | » ; je ne pense
pas qu'il existe une autre solution.
Rhâzut, je n'avais pas lu l'intérieur des parenthèses. Désolé. Alors tu peux passer par un script externe qui contiendra le « | » ; je ne pense pas qu'il existe une autre solution.
Oui, ça a déjà été mentionné :
find . -exec sh -c "foo | bar" ;
-- Matthieu
Paul Gaborit
À (at) Thu, 26 Oct 2006 09:46:55 +0200, Matthieu Moy écrivait (wrote):
Olivier Miakinen <om+ writes:
Rhâzut, je n'avais pas lu l'intérieur des parenthèses. Désolé. Alors tu peux passer par un script externe qui contiendra le « | » ; je ne pense pas qu'il existe une autre solution.
Oui, ça a déjà été mentionné :
find . -exec sh -c "foo | bar" ;
Certes... mais comment insérer le nom du fichier courant dans la commande sh ?
Évidemment, ceci *ne* *marche* *pas* (le {} n'est pas remplacé):
find . -exec sh -c "foo | bar {}" ;
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
À (at) Thu, 26 Oct 2006 09:46:55 +0200,
Matthieu Moy <MatthieuNOSPAM.Moy@imag.fr.invalid> écrivait (wrote):
Olivier Miakinen <om+news@miakinen.net> writes:
Rhâzut, je n'avais pas lu l'intérieur des parenthèses. Désolé. Alors tu
peux passer par un script externe qui contiendra le « | » ; je ne pense
pas qu'il existe une autre solution.
Oui, ça a déjà été mentionné :
find . -exec sh -c "foo | bar" ;
Certes... mais comment insérer le nom du fichier courant dans la
commande sh ?
Évidemment, ceci *ne* *marche* *pas* (le {} n'est pas remplacé):
find . -exec sh -c "foo | bar {}" ;
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
À (at) Thu, 26 Oct 2006 09:46:55 +0200, Matthieu Moy écrivait (wrote):
Olivier Miakinen <om+ writes:
Rhâzut, je n'avais pas lu l'intérieur des parenthèses. Désolé. Alors tu peux passer par un script externe qui contiendra le « | » ; je ne pense pas qu'il existe une autre solution.
Oui, ça a déjà été mentionné :
find . -exec sh -c "foo | bar" ;
Certes... mais comment insérer le nom du fichier courant dans la commande sh ?
Évidemment, ceci *ne* *marche* *pas* (le {} n'est pas remplacé):
find . -exec sh -c "foo | bar {}" ;
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Olivier Miakinen
Oui, ça a déjà été mentionné :
find . -exec sh -c "foo | bar" ;
Certes... mais comment insérer le nom du fichier courant dans la commande sh ?
Évidemment, ceci *ne* *marche* *pas* (le {} n'est pas remplacé):
Certes... mais comment insérer le nom du fichier courant dans la commande sh ?
Arf, c'est une FAQ, ça ;-)
Évidemment, ceci *ne* *marche* *pas* (le {} n'est pas remplacé):
find . -exec sh -c "foo | bar {}" ;
find . -exec sh -c 'echo "$0"' {} ;
De mémoire, il peut y avoir des problèmes de portabilités, certains sh ne prennant pas $0 de la même façon. La solution portable a deux "{}" après le bout de script, mais je préfère ne pas la citer de mémoire pour éviter d'écrire une connerie ;-).
-- Matthieu
Paul Gaborit <Paul.Gaborit@invalid.invalid> writes:
Certes... mais comment insérer le nom du fichier courant dans la
commande sh ?
Arf, c'est une FAQ, ça ;-)
Évidemment, ceci *ne* *marche* *pas* (le {} n'est pas remplacé):
find . -exec sh -c "foo | bar {}" ;
find . -exec sh -c 'echo "$0"' {} ;
De mémoire, il peut y avoir des problèmes de portabilités, certains sh
ne prennant pas $0 de la même façon. La solution portable a deux "{}"
après le bout de script, mais je préfère ne pas la citer de mémoire
pour éviter d'écrire une connerie ;-).
Certes... mais comment insérer le nom du fichier courant dans la commande sh ?
Arf, c'est une FAQ, ça ;-)
Évidemment, ceci *ne* *marche* *pas* (le {} n'est pas remplacé):
find . -exec sh -c "foo | bar {}" ;
find . -exec sh -c 'echo "$0"' {} ;
De mémoire, il peut y avoir des problèmes de portabilités, certains sh ne prennant pas $0 de la même façon. La solution portable a deux "{}" après le bout de script, mais je préfère ne pas la citer de mémoire pour éviter d'écrire une connerie ;-).
-- Matthieu
JustMe
Matthieu Moy a écrit
Paul Gaborit writes:
Certes... mais comment insérer le nom du fichier courant dans la commande sh ?
Arf, c'est une FAQ, ça ;-)
Évidemment, ceci *ne* *marche* *pas* (le {} n'est pas remplacé):
find . -exec sh -c "foo | bar {}" ;
find . -exec sh -c 'echo "$0"' {} ;
De mémoire, il peut y avoir des problèmes de portabilités, certains sh ne prennant pas $0 de la même façon. La solution portable a deux "{}" après le bout de script, mais je préfère ne pas la citer de mémoire pour éviter d'écrire une connerie ;-).
C'est pas plutot "$@" ?
Matthieu Moy a écrit
Paul Gaborit <Paul.Gaborit@invalid.invalid> writes:
Certes... mais comment insérer le nom du fichier courant dans la
commande sh ?
Arf, c'est une FAQ, ça ;-)
Évidemment, ceci *ne* *marche* *pas* (le {} n'est pas remplacé):
find . -exec sh -c "foo | bar {}" ;
find . -exec sh -c 'echo "$0"' {} ;
De mémoire, il peut y avoir des problèmes de portabilités, certains sh
ne prennant pas $0 de la même façon. La solution portable a deux "{}"
après le bout de script, mais je préfère ne pas la citer de mémoire
pour éviter d'écrire une connerie ;-).
Certes... mais comment insérer le nom du fichier courant dans la commande sh ?
Arf, c'est une FAQ, ça ;-)
Évidemment, ceci *ne* *marche* *pas* (le {} n'est pas remplacé):
find . -exec sh -c "foo | bar {}" ;
find . -exec sh -c 'echo "$0"' {} ;
De mémoire, il peut y avoir des problèmes de portabilités, certains sh ne prennant pas $0 de la même façon. La solution portable a deux "{}" après le bout de script, mais je préfère ne pas la citer de mémoire pour éviter d'écrire une connerie ;-).
C'est pas plutot "$@" ?
Stan
"Olivier Miakinen" <om+ a écrit dans le message de news: 45406391$
Enfin, certaines versions de find ont un « -print » par défaut en l'absence de toute autre commande, ce qui donne : find . | awk ' { print }'
Quelle est la forme canonique pour parvenir au bon résultat ( en passant par l'option -exec et non pas par un pipe après le find ) ?
Rhâzut, je n'avais pas lu l'intérieur des parenthèses. Désolé. Alors tu peux passer par un script externe qui contiendra le « | » ; je ne pense pas qu'il existe une autre solution.
En fait, je pensais que l'utilisation du "-exec" du find simplifierai peut être la lecture de mes scripts, mais ce n'ai pas le cas ( comparé à un un pipe vers awk ). Je pensais être passé à côté de qq chose, mais non ;-)
Merci pour vos remarques
-- -Stan
"Olivier Miakinen" <om+news@miakinen.net> a écrit dans le message de news:
45406391$1@neottia.net...
Enfin, certaines versions de find ont un « -print » par défaut en
l'absence de toute autre commande, ce qui donne :
find . | awk ' { print }'
Quelle est la forme canonique pour parvenir au bon résultat
( en passant par l'option -exec et non pas par un pipe après le find ) ?
Rhâzut, je n'avais pas lu l'intérieur des parenthèses. Désolé. Alors tu
peux passer par un script externe qui contiendra le « | » ; je ne pense
pas qu'il existe une autre solution.
En fait, je pensais que l'utilisation du "-exec" du find
simplifierai peut être la lecture de mes scripts, mais
ce n'ai pas le cas ( comparé à un un pipe vers awk ).
Je pensais être passé à côté de qq chose, mais non ;-)
"Olivier Miakinen" <om+ a écrit dans le message de news: 45406391$
Enfin, certaines versions de find ont un « -print » par défaut en l'absence de toute autre commande, ce qui donne : find . | awk ' { print }'
Quelle est la forme canonique pour parvenir au bon résultat ( en passant par l'option -exec et non pas par un pipe après le find ) ?
Rhâzut, je n'avais pas lu l'intérieur des parenthèses. Désolé. Alors tu peux passer par un script externe qui contiendra le « | » ; je ne pense pas qu'il existe une autre solution.
En fait, je pensais que l'utilisation du "-exec" du find simplifierai peut être la lecture de mes scripts, mais ce n'ai pas le cas ( comparé à un un pipe vers awk ). Je pensais être passé à côté de qq chose, mais non ;-)
Merci pour vos remarques
-- -Stan
Paul Gaborit
À (at) Thu, 26 Oct 2006 11:17:04 +0200, Olivier Miakinen <om+ écrivait (wrote):
Oui, ça a déjà été mentionné :
find . -exec sh -c "foo | bar" ;
Certes... mais comment insérer le nom du fichier courant dans la commande sh ?
Évidemment, ceci *ne* *marche* *pas* (le {} n'est pas remplacé):