find d'un répertoire et supprimer une expression dans des fichiers
Le
andre_debian

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é
--
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-REQUEST@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
Archive: http://lists.debian.org/201310161448.06262.andre_debian@numericable.fr
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é
--
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-REQUEST@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
Archive: http://lists.debian.org/201310161448.06262.andre_debian@numericable.fr
Le mercredi 16 octobre 2013 à 14:48, a écrit :
Quelque chose comme ça ?
find /var -type f -exec sed -i 's/<expression>//g' {} ;
Je te conseille de tester ta commande dans un dossier moins sensible que /var
avant de te lancer (et p'têt aussi de t'assurer que tu as une bonne sauvegarde
dans un coin…).
Seb
--
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
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Le 16/10/2013 14:48, 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é.
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
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Et ça n'est pas du tout sûr que ce soit suffisant. Le /var contient
des choses dynamiques, notamment si un serveur SQL tourne avec le
risque de désynchroiser les fichiers et ce que contient le cache du
dit serveur. Et il y a peut-être d'autres daemons qui pourraient être
« impactés » ? Bref, ça me paraît bien téméraire de lancer une telle
commande globalement sur tout /var.
dom
--
--
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
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Moi aussi, ça m'intéresse ce truc :-)
Le 16 oct. 13 à 15:59, Dominique Asselineau a écrit :
--
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
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Merci.
Ça marche très bien :
$ egrep -lR "<expression>" /home/andre/essai/ | xargs -d 'n' -n 1 sed -i ' s/<expression>//g'
Merci de me prévenir, je vais faire très attention en me limitant à d es sous-répertoires
de /var/ ...
andré
--
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
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/