2010-07-01 6 views
0

Salut, je suis en train de nettoyer un site à partir d'un js-cheval de Troie pour un client, il a ajouté:Problème formatage trouvaille avec sortie sed

<script src='http://nt02.co.in/3'></script> à toutes les pages HTML.

Comme il est trop de fichiers à nettoyer manuellement j'ai essayé à faire pour trouver comme ceci:

find ./ -type f -exec sed -e "s\<script src='http://nt02.co.in/3'></script>\ \g" {} > {} \;

Le problème est que vous n'êtes pas autorisé à sortie à l'entrée avec sed. J'ai donc essayé de faire quelque chose comme:

find ./ -type f ! -iname "*.new" -exec sed -e "s\<script src='http://nt02.co.in/3'></script>\ \g" {} > {}.new \;

ne fonctionne pas non plus, il émet un fichier nommé « {} .new » ...

Des conseils sur la façon de le faire correctement ? Ou une autre solution sur la façon de nettoyer cela?

Répondre

1

Je pense que vous rendez les choses plus compliquées qu'elles ne devraient l'être. En particulier, vous voulez utiliser l'option -i, qui vous permet d'éditer le fichier comme vous le souhaitez. Vous voudrez peut-être quelque chose comme

sed -i '/<script src='http:\/\/nt02.co.in\/3'><\/script>/ d' *.html 

ou utiliser un script si vous vous sentez plus à l'aise, quelque chose comme

for f in "dir/*.html" 
do 
    sed -i '/<script src='http:\/\/nt02.co.in\/3'><\/script>/ d' $f 
done 

Voir http://www.cyberciti.biz/faq/unix-linux-replace-string-words-in-many-files/

+0

+1, le drapeau -i est ce que les besoins des OP. – ninjalj

0

Untested:

find . -type f -print0 | xargs -0 perl -i.nt02 -pe "s#<script src='http://nt02.co.in/3'></script># #g" 
0

Il ne peut pas soyez tout à fait clair à vous de la réponse de @ user379118, mais le drapeau -i (ou --in-place) vous permet de faire des retouches sur place avec sed, en vous permettant de créer une copie du fichier original en cours de route, au cas où.

0

Merci pour vos réponses! j'ai fait comme ceci:

while read f 
do 
    sed -i "s#<script src='http://nt02.co.in/3'></script># #g" "$f" 
done < list 
liste

est un fichier contenant des chemins de fichiers, générés comme ceci:

grep -irl "<script src='http://nt02.co.in/3'></script>" ./folder/ > list