Salut, Le 16/10/2013 14:48, andre_debian@numericable.fr a écrit :
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é.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é
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