Je pense qu'un script avec variable serait plus adapté mais je sèche et mes recherches sur google ne m'apportent pas la soluce à mon problème.
Je pense que l'action voulue est de chercher récursivement dans le répertoire /monpath tous les fichiers contenant le motif montemplate (insensiblement à la casse), et de les copier dans le répertoire /monrepertoire/mesresultats.
Dans ce cas, on peut utiliser quelque chose comme :
Je pense qu'un script avec variable serait plus adapté mais je sèche et
mes recherches sur google ne m'apportent pas la soluce à mon problème.
Je pense que l'action voulue est de chercher récursivement dans le
répertoire /monpath tous les fichiers contenant le motif montemplate
(insensiblement à la casse), et de les copier dans le répertoire
/monrepertoire/mesresultats.
Dans ce cas, on peut utiliser quelque chose comme :
Je pense qu'un script avec variable serait plus adapté mais je sèche et mes recherches sur google ne m'apportent pas la soluce à mon problème.
Je pense que l'action voulue est de chercher récursivement dans le répertoire /monpath tous les fichiers contenant le motif montemplate (insensiblement à la casse), et de les copier dans le répertoire /monrepertoire/mesresultats.
Dans ce cas, on peut utiliser quelque chose comme :
Je pense qu'un script avec variable serait plus adapté mais je sèche et mes recherches sur google ne m'apportent pas la soluce à mon problème.
Je pense que l'action voulue est de chercher récursivement dans le répertoire /monpath tous les fichiers contenant le motif montemplate (insensiblement à la casse), et de les copier dans le répertoire /monrepertoire/mesresultats.
Dans ce cas, on peut utiliser quelque chose comme :
Pour plus d'infos sur ces commandes : man grep, man xargs.
Par avance merci pour l'aide ou des renseignements donnés
De rien.
Encore merci pour le coup de main, mais hélas je n'ai pas obtenu le
résultat escompté, j'obtiens la liste des fichiers à copier puis le message suivant: grep: xargs: No such file or directory grep: cp: No such file or directory grep: {}: No such file or directory et retour au prompt! J'ai bien le défilement des fichiers que je souhaitait copier et je crois comprendre que c'est à partir de la synthaxe de xargs que ça coince. Je précise que je suis sous FreeBSD 5.3 mais je ne crois pas qu'il y a une incidence sur la ligne de commande donnée.
Donc mon problème n'est pas résolu, mais merci tout de même. Jean-François Garnier
David LE BOURGEOIS wrote:
Bonjour,
Bonsoir.
Débutant sous tcsh, je cherche un moyen de combiner les
commandes grep et cp sous la forme suivante
Je pense qu'un script avec variable serait plus adapté mais je sèche et
mes recherches sur google ne m'apportent pas la soluce à mon problème.
Je pense que l'action voulue est de chercher récursivement dans le
répertoire /monpath tous les fichiers contenant le motif montemplate
(insensiblement à la casse), et de les copier dans le répertoire
/monrepertoire/mesresultats.
Dans ce cas, on peut utiliser quelque chose comme :
Pour plus d'infos sur ces commandes : man grep, man xargs.
Par avance merci pour l'aide ou des renseignements donnés
De rien.
Encore merci pour le coup de main, mais hélas je n'ai pas obtenu le
résultat escompté, j'obtiens la liste des fichiers à copier puis le
message suivant:
grep: xargs: No such file or directory
grep: cp: No such file or directory
grep: {}: No such file or directory
et retour au prompt!
J'ai bien le défilement des fichiers que je souhaitait copier et je
crois comprendre que c'est à partir de la synthaxe de xargs que ça
coince. Je précise que je suis sous FreeBSD 5.3 mais je ne crois pas
qu'il y a une incidence sur la ligne de commande donnée.
Donc mon problème n'est pas résolu, mais merci tout de même.
Jean-François Garnier
Je pense qu'un script avec variable serait plus adapté mais je sèche et mes recherches sur google ne m'apportent pas la soluce à mon problème.
Je pense que l'action voulue est de chercher récursivement dans le répertoire /monpath tous les fichiers contenant le motif montemplate (insensiblement à la casse), et de les copier dans le répertoire /monrepertoire/mesresultats.
Dans ce cas, on peut utiliser quelque chose comme :
Pour plus d'infos sur ces commandes : man grep, man xargs.
Par avance merci pour l'aide ou des renseignements donnés
De rien.
Encore merci pour le coup de main, mais hélas je n'ai pas obtenu le
résultat escompté, j'obtiens la liste des fichiers à copier puis le message suivant: grep: xargs: No such file or directory grep: cp: No such file or directory grep: {}: No such file or directory et retour au prompt! J'ai bien le défilement des fichiers que je souhaitait copier et je crois comprendre que c'est à partir de la synthaxe de xargs que ça coince. Je précise que je suis sous FreeBSD 5.3 mais je ne crois pas qu'il y a une incidence sur la ligne de commande donnée.
Donc mon problème n'est pas résolu, mais merci tout de même. Jean-François Garnier
Khanh-Dang
Débutant sous tcsh, je cherche un moyen de combiner les commandes grep et cp sous la forme suivante
Comme le disait David, je suppose que tu veux copier tous les fichiers listés par grep dans le répertoire /monrepertoire/mesresultats.
Tu peux regarder la page man de grep au paragraphe concernant l'option -exec. Tu peux aussi utiliser xargs à travers une pipe, même s'il est préférable d'utiliser grep avec -exec pour des raisons du nombre limité d'arguments à passer à une commande.
Tout d'abord, fait un "grep -r -i montemplate /monpath" tout seul pour vérifier que ça te liste bien tous les bons fichiers.
Ensuite, après lecture de la page man de grep, tu comprendras la commande : grep -r -i montemplate /monpath -exec cp {} /mesresultats ;
Attention ! Je ne connais pas tcsh et peut-être faut-il aussi avec ce shell échapper les caractères { et } :
Comme le disait David, je suppose que tu veux copier tous les fichiers
listés par grep dans le répertoire /monrepertoire/mesresultats.
Tu peux regarder la page man de grep au paragraphe concernant l'option
-exec. Tu peux aussi utiliser xargs à travers une pipe, même s'il est
préférable d'utiliser grep avec -exec pour des raisons du nombre limité
d'arguments à passer à une commande.
Tout d'abord, fait un "grep -r -i montemplate /monpath" tout seul pour
vérifier que ça te liste bien tous les bons fichiers.
Ensuite, après lecture de la page man de grep, tu comprendras la commande :
grep -r -i montemplate /monpath -exec cp {} /mesresultats ;
Attention ! Je ne connais pas tcsh et peut-être faut-il aussi avec ce
shell échapper les caractères { et } :
Comme le disait David, je suppose que tu veux copier tous les fichiers listés par grep dans le répertoire /monrepertoire/mesresultats.
Tu peux regarder la page man de grep au paragraphe concernant l'option -exec. Tu peux aussi utiliser xargs à travers une pipe, même s'il est préférable d'utiliser grep avec -exec pour des raisons du nombre limité d'arguments à passer à une commande.
Tout d'abord, fait un "grep -r -i montemplate /monpath" tout seul pour vérifier que ça te liste bien tous les bons fichiers.
Ensuite, après lecture de la page man de grep, tu comprendras la commande : grep -r -i montemplate /monpath -exec cp {} /mesresultats ;
Attention ! Je ne connais pas tcsh et peut-être faut-il aussi avec ce shell échapper les caractères { et } :
Je pense qu'un script avec variable serait plus adapté mais je sèche et mes recherches sur google ne m'apportent pas la soluce à mon problème.
Par avance merci pour l'aide ou des renseignements donnés
Le problème c'est d'essayer ça avec tcsh...
chsh /bin/bash
ou sinon:
bash -c 'grep -r -i montemplate /monpath |sed -e 's/:.*//''|while read f ; do cp "$f" /monrepertoire/mesresultats ; done'
(En priant pour qu'aucun élément ne contiennent un ':' dans son nom; sinon faire: bash -c 'find /monpath -depth -name *:* -print | while read f ; do mv "$f" "$(dirname "$f")/$((echo $(basename "$f")|sed -e 's/:/--/g'))" ; done'
)
-- __Pascal Bourguignon__ http://www.informatimago.com/ Until real software engineering is developed, the next best practice is to develop with a dynamic system that has extreme late binding in all aspects. The first system to really do this in an important way is Lisp. -- Alan Kay
FreeSBIE User <jean-francois.garnier4@wanadoo.fr> writes:
Bonjour,
Débutant sous tcsh, je cherche un moyen de combiner les
commandes grep et cp sous la forme suivante
Je pense qu'un script avec variable serait plus adapté mais je sèche et
mes recherches sur google ne m'apportent pas la soluce à mon problème.
Par avance merci pour l'aide ou des renseignements donnés
Le problème c'est d'essayer ça avec tcsh...
chsh /bin/bash
ou sinon:
bash -c 'grep -r -i montemplate /monpath |sed -e 's/:.*//''|while read f ; do cp "$f" /monrepertoire/mesresultats ; done'
(En priant pour qu'aucun élément ne contiennent un ':' dans son nom; sinon faire:
bash -c 'find /monpath -depth -name *:* -print | while read f ; do mv "$f" "$(dirname "$f")/$((echo $(basename "$f")|sed -e 's/:/--/g'))" ; done'
)
--
__Pascal Bourguignon__ http://www.informatimago.com/
Until real software engineering is developed, the next best practice
is to develop with a dynamic system that has extreme late binding in
all aspects. The first system to really do this in an important way
is Lisp. -- Alan Kay
Je pense qu'un script avec variable serait plus adapté mais je sèche et mes recherches sur google ne m'apportent pas la soluce à mon problème.
Par avance merci pour l'aide ou des renseignements donnés
Le problème c'est d'essayer ça avec tcsh...
chsh /bin/bash
ou sinon:
bash -c 'grep -r -i montemplate /monpath |sed -e 's/:.*//''|while read f ; do cp "$f" /monrepertoire/mesresultats ; done'
(En priant pour qu'aucun élément ne contiennent un ':' dans son nom; sinon faire: bash -c 'find /monpath -depth -name *:* -print | while read f ; do mv "$f" "$(dirname "$f")/$((echo $(basename "$f")|sed -e 's/:/--/g'))" ; done'
)
-- __Pascal Bourguignon__ http://www.informatimago.com/ Until real software engineering is developed, the next best practice is to develop with a dynamic system that has extreme late binding in all aspects. The first system to really do this in an important way is Lisp. -- Alan Kay
Encore merci pour le coup de main, mais hélas je n'ai pas obtenu le résultat escompté, j'obtiens la liste des fichiers à copier puis le message suivant: grep: xargs: No such file or directory
Encore merci pour le coup de main, mais hélas je n'ai pas obtenu le
résultat escompté, j'obtiens la liste des fichiers à copier puis le
message suivant:
grep: xargs: No such file or directory
Encore merci pour le coup de main, mais hélas je n'ai pas obtenu le résultat escompté, j'obtiens la liste des fichiers à copier puis le message suivant: grep: xargs: No such file or directory
As-tu bien mis le « | » comme indiqué ?
Jean-François Garnier
Khanh-Dang wrote:
Débutant sous tcsh, je cherche un moyen de combiner les commandes grep et cp sous la forme suivante
Comme le disait David, je suppose que tu veux copier tous les fichiers listés par grep dans le répertoire /monrepertoire/mesresultats.
Tu peux regarder la page man de grep au paragraphe concernant l'option -exec. Tu peux aussi utiliser xargs à travers une pipe, même s'il est préférable d'utiliser grep avec -exec pour des raisons du nombre limité d'arguments à passer à une commande.
Tout d'abord, fait un "grep -r -i montemplate /monpath" tout seul pour vérifier que ça te liste bien tous les bons fichiers.
Ensuite, après lecture de la page man de grep, tu comprendras la commande : grep -r -i montemplate /monpath -exec cp {} /mesresultats ;
Attention ! Je ne connais pas tcsh et peut-être faut-il aussi avec ce shell échapper les caractères { et } :
Hélas, Kahnh-Dang, ta soluce, ne me permet toujours pas de remédier au problème et c'est pas faute de chercher (depuis hier...;-)). Les fichiers que je cherche comportent bel et bien le template employé
Ton script, même en employant les caractères d'échappement, me donne: grep: {}: No such file or directory ....surprenant!
J'ai vraiment pas envie de faire un tri "à la main" parmi 3000 fichiers pour n'en conserver qu'à peine plus d'une centaine. Il est vrai que je m'obstine à vouloir faire ça en ligne de commande. Ca doit bien être possible tout de même.
J-F Garnier
Khanh-Dang wrote:
Débutant sous tcsh, je cherche un moyen de combiner les
commandes grep et cp sous la forme suivante
Comme le disait David, je suppose que tu veux copier tous les fichiers
listés par grep dans le répertoire /monrepertoire/mesresultats.
Tu peux regarder la page man de grep au paragraphe concernant l'option
-exec. Tu peux aussi utiliser xargs à travers une pipe, même s'il est
préférable d'utiliser grep avec -exec pour des raisons du nombre limité
d'arguments à passer à une commande.
Tout d'abord, fait un "grep -r -i montemplate /monpath" tout seul pour
vérifier que ça te liste bien tous les bons fichiers.
Ensuite, après lecture de la page man de grep, tu comprendras la commande :
grep -r -i montemplate /monpath -exec cp {} /mesresultats ;
Attention ! Je ne connais pas tcsh et peut-être faut-il aussi avec ce
shell échapper les caractères { et } :
Hélas, Kahnh-Dang, ta soluce, ne me permet toujours pas de remédier au
problème et c'est pas faute de chercher (depuis hier...;-)).
Les fichiers que je cherche comportent bel et bien le template employé
Ton script, même en employant les caractères d'échappement, me donne:
grep: {}: No such file or directory ....surprenant!
J'ai vraiment pas envie de faire un tri "à la main" parmi 3000 fichiers
pour n'en conserver qu'à peine plus d'une centaine. Il est vrai que je
m'obstine à vouloir faire ça en ligne de commande. Ca doit bien être
possible tout de même.
Comme le disait David, je suppose que tu veux copier tous les fichiers listés par grep dans le répertoire /monrepertoire/mesresultats.
Tu peux regarder la page man de grep au paragraphe concernant l'option -exec. Tu peux aussi utiliser xargs à travers une pipe, même s'il est préférable d'utiliser grep avec -exec pour des raisons du nombre limité d'arguments à passer à une commande.
Tout d'abord, fait un "grep -r -i montemplate /monpath" tout seul pour vérifier que ça te liste bien tous les bons fichiers.
Ensuite, après lecture de la page man de grep, tu comprendras la commande : grep -r -i montemplate /monpath -exec cp {} /mesresultats ;
Attention ! Je ne connais pas tcsh et peut-être faut-il aussi avec ce shell échapper les caractères { et } :
Hélas, Kahnh-Dang, ta soluce, ne me permet toujours pas de remédier au problème et c'est pas faute de chercher (depuis hier...;-)). Les fichiers que je cherche comportent bel et bien le template employé
Ton script, même en employant les caractères d'échappement, me donne: grep: {}: No such file or directory ....surprenant!
J'ai vraiment pas envie de faire un tri "à la main" parmi 3000 fichiers pour n'en conserver qu'à peine plus d'une centaine. Il est vrai que je m'obstine à vouloir faire ça en ligne de commande. Ca doit bien être possible tout de même.
J-F Garnier
Pascal Bourguignon
Jean-François Garnier writes:
Pascal Bourguignon wrote:
FreeSBIE User writes:
Bonjour, Débutant sous tcsh, je cherche un moyen de combiner les commandes grep et cp sous la forme suivante
Je pense qu'un script avec variable serait plus adapté mais je sèche et mes recherches sur google ne m'apportent pas la soluce à mon problème.
Par avance merci pour l'aide ou des renseignements donnés Le problème c'est d'essayer ça avec tcsh...
chsh /bin/bash ou sinon: bash -c 'grep -r -i montemplate /monpath |sed -e 's/:.*//''|while read f ; do cp "$f" /monrepertoire/mesresultats ; done' (En priant pour qu'aucun élément ne contiennent un ':' dans son nom; sinon faire: bash -c 'find /monpath -depth -name *:* -print | while read f ; do mv "$f" "$(dirname "$f")/$((echo $(basename "$f")|sed -e 's/:/--/g'))" ; done' )
Merci mais hélas, Pascal, sous Bash, ta commande ne m'apporte guère
plus de résultats positifs, ça plante par: bash: line 1: unexpected EOF while looking for matching `''
Oui, il y avait une quote en trop. Voici:
bash -c 'grep -r -i montemplate /monpath |sed -e 's/:.*//'|while read f ; do cp "$f" /monrepertoire/mesresultats ; done'
Ou aussi:
bash grep -r -i montemplate /monpath | sed -e 's/:.*//' | while read f ; do cp "$f" /monrepertoire/mesresultats done
Je suppose qu'il s'agit d'une erreur de synthaxe ou de frappe clavier car j'ai effectué cette commande en vérifiant ma frappe.
Et le copier-coller?
J'ai bien l'impression que je suis face à un problème insoluble sous cette forme, ....et il ne s'agit pourtant pas d'un exercice car je ne suis pas étudiant mais simplement passionné par le système FreeBSD que j'essaye d'employer dans mon quotidien. Mais je ne désespère pas d'y parvenir un jour.
C'est facile de construire des pipes petit à petit. Commencer par la première commande, et ajouter les commandes une après l'autre. Dans bash, on peut éditer la commande précédente avec les mêmes séquences qu'emacs (ou vi si on se le configure ainsi), C-p, C-n, C-a, C-e, C-f, C-b, C-d, etc.
grep -r -i montemplate /monpath
Puis:
grep -r -i montemplate /monpath | sed -e 's/:.*//'
Puis:
grep -r -i montemplate /monpath | sed -e 's/:.*//' | while read f ; do echo cp "$f" /monrepertoire/mesresultats done
Puis:
grep -r -i montemplate /monpath | sed -e 's/:.*//' | while read f ; do cp "$f" /monrepertoire/mesresultats done
-- __Pascal Bourguignon__ http://www.informatimago.com/ You never feed me. Perhaps I'll sleep on your face. That will sure show you.
Je pense qu'un script avec variable serait plus adapté mais je sèche et
mes recherches sur google ne m'apportent pas la soluce à mon problème.
Par avance merci pour l'aide ou des renseignements donnés
Le problème c'est d'essayer ça avec tcsh...
chsh /bin/bash
ou sinon:
bash -c 'grep -r -i montemplate /monpath |sed -e 's/:.*//''|while
read f ; do cp "$f" /monrepertoire/mesresultats ; done'
(En priant pour qu'aucun élément ne contiennent un ':' dans son nom;
sinon faire:
bash -c 'find /monpath -depth -name *:* -print | while read f ; do mv "$f" "$(dirname "$f")/$((echo $(basename "$f")|sed -e 's/:/--/g'))" ; done'
)
Merci mais hélas, Pascal, sous Bash, ta commande ne m'apporte guère
plus de résultats positifs, ça plante par:
bash: line 1: unexpected EOF while looking for matching `''
Oui, il y avait une quote en trop. Voici:
bash -c 'grep -r -i montemplate /monpath |sed -e 's/:.*//'|while read f ; do cp "$f" /monrepertoire/mesresultats ; done'
Ou aussi:
bash
grep -r -i montemplate /monpath
| sed -e 's/:.*//'
| while read f ; do
cp "$f" /monrepertoire/mesresultats
done
Je suppose qu'il s'agit d'une erreur de synthaxe ou de frappe clavier
car j'ai effectué cette commande en vérifiant ma frappe.
Et le copier-coller?
J'ai bien l'impression que je suis face à un problème insoluble sous
cette forme, ....et il ne s'agit pourtant pas d'un exercice car je ne
suis pas étudiant mais simplement passionné par le système FreeBSD que
j'essaye d'employer dans mon quotidien. Mais je ne désespère pas d'y
parvenir un jour.
C'est facile de construire des pipes petit à petit. Commencer par la
première commande, et ajouter les commandes une après l'autre. Dans
bash, on peut éditer la commande précédente avec les mêmes séquences
qu'emacs (ou vi si on se le configure ainsi), C-p, C-n, C-a, C-e, C-f,
C-b, C-d, etc.
grep -r -i montemplate /monpath
Puis:
grep -r -i montemplate /monpath | sed -e 's/:.*//'
Puis:
grep -r -i montemplate /monpath | sed -e 's/:.*//' | while read f ; do
echo cp "$f" /monrepertoire/mesresultats
done
Puis:
grep -r -i montemplate /monpath | sed -e 's/:.*//' | while read f ; do
cp "$f" /monrepertoire/mesresultats
done
--
__Pascal Bourguignon__ http://www.informatimago.com/
You never feed me.
Perhaps I'll sleep on your face.
That will sure show you.
Je pense qu'un script avec variable serait plus adapté mais je sèche et mes recherches sur google ne m'apportent pas la soluce à mon problème.
Par avance merci pour l'aide ou des renseignements donnés Le problème c'est d'essayer ça avec tcsh...
chsh /bin/bash ou sinon: bash -c 'grep -r -i montemplate /monpath |sed -e 's/:.*//''|while read f ; do cp "$f" /monrepertoire/mesresultats ; done' (En priant pour qu'aucun élément ne contiennent un ':' dans son nom; sinon faire: bash -c 'find /monpath -depth -name *:* -print | while read f ; do mv "$f" "$(dirname "$f")/$((echo $(basename "$f")|sed -e 's/:/--/g'))" ; done' )
Merci mais hélas, Pascal, sous Bash, ta commande ne m'apporte guère
plus de résultats positifs, ça plante par: bash: line 1: unexpected EOF while looking for matching `''
Oui, il y avait une quote en trop. Voici:
bash -c 'grep -r -i montemplate /monpath |sed -e 's/:.*//'|while read f ; do cp "$f" /monrepertoire/mesresultats ; done'
Ou aussi:
bash grep -r -i montemplate /monpath | sed -e 's/:.*//' | while read f ; do cp "$f" /monrepertoire/mesresultats done
Je suppose qu'il s'agit d'une erreur de synthaxe ou de frappe clavier car j'ai effectué cette commande en vérifiant ma frappe.
Et le copier-coller?
J'ai bien l'impression que je suis face à un problème insoluble sous cette forme, ....et il ne s'agit pourtant pas d'un exercice car je ne suis pas étudiant mais simplement passionné par le système FreeBSD que j'essaye d'employer dans mon quotidien. Mais je ne désespère pas d'y parvenir un jour.
C'est facile de construire des pipes petit à petit. Commencer par la première commande, et ajouter les commandes une après l'autre. Dans bash, on peut éditer la commande précédente avec les mêmes séquences qu'emacs (ou vi si on se le configure ainsi), C-p, C-n, C-a, C-e, C-f, C-b, C-d, etc.
grep -r -i montemplate /monpath
Puis:
grep -r -i montemplate /monpath | sed -e 's/:.*//'
Puis:
grep -r -i montemplate /monpath | sed -e 's/:.*//' | while read f ; do echo cp "$f" /monrepertoire/mesresultats done
Puis:
grep -r -i montemplate /monpath | sed -e 's/:.*//' | while read f ; do cp "$f" /monrepertoire/mesresultats done
-- __Pascal Bourguignon__ http://www.informatimago.com/ You never feed me. Perhaps I'll sleep on your face. That will sure show you.
Jean-François Garnier
Pascal Bourguignon wrote:
FreeSBIE User writes:
Bonjour, Débutant sous tcsh, je cherche un moyen de combiner les commandes grep et cp sous la forme suivante
Je pense qu'un script avec variable serait plus adapté mais je sèche et mes recherches sur google ne m'apportent pas la soluce à mon problème.
Par avance merci pour l'aide ou des renseignements donnés
Le problème c'est d'essayer ça avec tcsh...
chsh /bin/bash
ou sinon:
bash -c 'grep -r -i montemplate /monpath |sed -e 's/:.*//''|while read f ; do cp "$f" /monrepertoire/mesresultats ; done'
(En priant pour qu'aucun élément ne contiennent un ':' dans son nom; sinon faire: bash -c 'find /monpath -depth -name *:* -print | while read f ; do mv "$f" "$(dirname "$f")/$((echo $(basename "$f")|sed -e 's/:/--/g'))" ; done'
)
Merci mais hélas, Pascal, sous Bash, ta commande ne m'apporte guère plus
de résultats positifs, ça plante par: bash: line 1: unexpected EOF while looking for matching `''
Je suppose qu'il s'agit d'une erreur de synthaxe ou de frappe clavier car j'ai effectué cette commande en vérifiant ma frappe.
J'ai bien l'impression que je suis face à un problème insoluble sous cette forme, ....et il ne s'agit pourtant pas d'un exercice car je ne suis pas étudiant mais simplement passionné par le système FreeBSD que j'essaye d'employer dans mon quotidien. Mais je ne désespère pas d'y parvenir un jour.
J-F Garnier
Pascal Bourguignon wrote:
FreeSBIE User <jean-francois.garnier4@wanadoo.fr> writes:
Bonjour,
Débutant sous tcsh, je cherche un moyen de combiner les
commandes grep et cp sous la forme suivante
Je pense qu'un script avec variable serait plus adapté mais je sèche et
mes recherches sur google ne m'apportent pas la soluce à mon problème.
Par avance merci pour l'aide ou des renseignements donnés
Le problème c'est d'essayer ça avec tcsh...
chsh /bin/bash
ou sinon:
bash -c 'grep -r -i montemplate /monpath |sed -e 's/:.*//''|while read f ; do cp "$f" /monrepertoire/mesresultats ; done'
(En priant pour qu'aucun élément ne contiennent un ':' dans son nom; sinon faire:
bash -c 'find /monpath -depth -name *:* -print | while read f ; do mv "$f" "$(dirname "$f")/$((echo $(basename "$f")|sed -e 's/:/--/g'))" ; done'
)
Merci mais hélas, Pascal, sous Bash, ta commande ne m'apporte guère plus
de résultats positifs, ça plante par:
bash: line 1: unexpected EOF while looking for matching `''
Je suppose qu'il s'agit d'une erreur de synthaxe ou de frappe clavier
car j'ai effectué cette commande en vérifiant ma frappe.
J'ai bien l'impression que je suis face à un problème insoluble sous
cette forme, ....et il ne s'agit pourtant pas d'un exercice car je ne
suis pas étudiant mais simplement passionné par le système FreeBSD que
j'essaye d'employer dans mon quotidien. Mais je ne désespère pas d'y
parvenir un jour.
Je pense qu'un script avec variable serait plus adapté mais je sèche et mes recherches sur google ne m'apportent pas la soluce à mon problème.
Par avance merci pour l'aide ou des renseignements donnés
Le problème c'est d'essayer ça avec tcsh...
chsh /bin/bash
ou sinon:
bash -c 'grep -r -i montemplate /monpath |sed -e 's/:.*//''|while read f ; do cp "$f" /monrepertoire/mesresultats ; done'
(En priant pour qu'aucun élément ne contiennent un ':' dans son nom; sinon faire: bash -c 'find /monpath -depth -name *:* -print | while read f ; do mv "$f" "$(dirname "$f")/$((echo $(basename "$f")|sed -e 's/:/--/g'))" ; done'
)
Merci mais hélas, Pascal, sous Bash, ta commande ne m'apporte guère plus
de résultats positifs, ça plante par: bash: line 1: unexpected EOF while looking for matching `''
Je suppose qu'il s'agit d'une erreur de synthaxe ou de frappe clavier car j'ai effectué cette commande en vérifiant ma frappe.
J'ai bien l'impression que je suis face à un problème insoluble sous cette forme, ....et il ne s'agit pourtant pas d'un exercice car je ne suis pas étudiant mais simplement passionné par le système FreeBSD que j'essaye d'employer dans mon quotidien. Mais je ne désespère pas d'y parvenir un jour.
Encore merci pour le coup de main, mais hélas je n'ai pas obtenu le résultat escompté, j'obtiens la liste des fichiers à copier puis le message suivant: grep: xargs: No such file or directory
As-tu bien mis le « | » comme indiqué ?
Oui. Le à la fin de la ligne fait que les deux lignes sont concaténées (le en moins);
a b
==
a b
a | b
= a | b
et le | est ce qui permet de rediriger la sortie de la commande à gauche (a) vers l'entrées de la commande à droite (b).
-- __Pascal Bourguignon__ http://www.informatimago.com/ Small brave carnivores Kill pine cones and mosquitoes Fear vacuum cleaner
Nicolas George <nicolas$george@salle-s.org> writes:
Encore merci pour le coup de main, mais hélas je n'ai pas obtenu le
résultat escompté, j'obtiens la liste des fichiers à copier puis le
message suivant:
grep: xargs: No such file or directory
As-tu bien mis le « | » comme indiqué ?
Oui. Le à la fin de la ligne fait que les deux lignes sont
concaténées (le en moins);
a
b
==
a b
a
| b
=
a | b
et le | est ce qui permet de rediriger la sortie de la commande à
gauche (a) vers l'entrées de la commande à droite (b).
--
__Pascal Bourguignon__ http://www.informatimago.com/
Small brave carnivores
Kill pine cones and mosquitoes
Fear vacuum cleaner
Encore merci pour le coup de main, mais hélas je n'ai pas obtenu le résultat escompté, j'obtiens la liste des fichiers à copier puis le message suivant: grep: xargs: No such file or directory
As-tu bien mis le « | » comme indiqué ?
Oui. Le à la fin de la ligne fait que les deux lignes sont concaténées (le en moins);
a b
==
a b
a | b
= a | b
et le | est ce qui permet de rediriger la sortie de la commande à gauche (a) vers l'entrées de la commande à droite (b).
-- __Pascal Bourguignon__ http://www.informatimago.com/ Small brave carnivores Kill pine cones and mosquitoes Fear vacuum cleaner
Nicolas George
Pascal Bourguignon wrote in message :
Oui. Le à la fin de la ligne fait que les deux lignes sont concaténées (le en moins);
Oui, et ses messages d'erreur semblaient indiquer que grep cherchait un fichier appelé xargs, donc que le était bien là, et pas le |.
Pascal Bourguignon wrote in message
<87hdinop20.fsf@thalassa.informatimago.com>:
Oui. Le à la fin de la ligne fait que les deux lignes sont
concaténées (le en moins);
Oui, et ses messages d'erreur semblaient indiquer que grep cherchait un
fichier appelé xargs, donc que le était bien là, et pas le |.