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