Salut,

Le 16/10/2013 14:48, andre_deb...@numericable.fr a écrit :
Bonjour,

Honte à moi, je sais pas faire,

Je désire accoupler à la commande "find",
la recherche d'une expression dans tous les fichiers
d'un répertoire et ensuite de supprimer cette expression par rien.

Soit un modèle comme ceci :
- find /var -exec egrep -n "<expression>" {} \; -print;
- cat fichier | grep -n <expression>
- sed -i 's/<expression>//g' fichier

Je n'arrive pas à le faire par une ligne sinon par un programme "bash".

Merci d'avance.

andré

Tu peux laisser tomber le find en utilisant la possibilité qu'a grep de parcourir une arborescence et à ne cracher que les noms des fichiers dans lesquels le motif a été trouvé.
Je pense que quelque chose comme ça doit pouvoir répondre à ta demande :

$ egrep -lR "<expression>" /var/ | xargs -d '\n' -n 1 sed -i 's/<expression>//g'

egrep va sortir les noms des fichiers qui contiennent on expression et xargs va appeler sed pour chacun de ces noms, en prenant le retour à la ligne comme séparateur, ce qui permet de traiter correctement les fichiers dont le nom contient des espaces (l'option "-n 1" de xargs permet d'appeler sed pour chacun des fichiers dans lesquels <expression> a été trouvé ; tu peux supprimer cette option et n'appeler sed qu'une seule fois pour plus d'efficacité à condition qu'il n'y ait pas trop de résultats ou mettre une valeur plus importante pour faire moins d'appels à sed).

A+
Jean-Jacques

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-requ...@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org
Archive: http://lists.debian.org/525e9037.40...@doti.fr

Reply via email to