(Courriels de diversion: <dîneront@pechiez-reviseront.com> <corne@construisiez-framboisier.com> <venus@imbrications-sherifs.com> <maîtriserez@giflaient-rationaliseras.com> <rougirent@consonance-recyclages.com> <faible@escrimeurs-retrocederai.com> <repeteraient@sous-paient-deracina.com> <intercedant@intra-communautaire-escarcelles.com> <mercantis@pleut-apraxie.com> <greveras@braviez-eduques.com> )
>>>>> "ap" == Ant-1 <ant-1@ws-interactive.fr> writes: ap> Pourquoi quand je fais : ap> ap> find . -name "*.php" -exec sed 's/chaine1/chaine2/' {} > {}.new \; ap> ap> Ca me mets tous mes fichiers trouvés avec find avec chaine1 remplacée ap> par chaine2 dans un seul fichier qui s'appelle {}.new au lieu de me ap> mettre chaque fichier avec le remplacement effectué dans son propre ap> fichier .new ? par ce que -exec fait un exec() du programme avec ces arguments; il n'y a pas de shell pour gérer le redirection (ou plutôt elle est faite par le shell d'origine). À la place utiliser find . -name "*.php" -exec sh -c "sed s/foo/bar/ {} > {}.new" \; ou plus simple find . -name "*.php" -print0 | xargs -0 perl -pi.new -e s/foo/bar/ où si on vire le .new les fichiers d'origine sont modifiés. -- Eric Marsden <URL:http://www.laas.fr/~emarsden/> --------------------------------------------------------------------- Aide sur la liste: <URL:mailto:linux-31-help@CULTe.org>Le CULTe sur le web: <URL:http://www.CULTe.org/>