2016-12-21 1 views
6

J'essaie de me débarrasser d'un problème de hacker sur certaines de mes installations wordpress.Besoin de supprimer les N premières lignes de fichiers de résultats grep

Ce gars met 9 lignes de code dans la tête de plusieurs fichiers sur mon serveur ... J'essaie d'utiliser grep et sed pour résoudre ce problème.

Im essayant:

grep -r -l "//360cdn.win/c.css" | xargs -0 sed -e '1,9d' < {} 

Mais rien ne se passe, si je retire -0 from xargs , the result of the files found are clean, but they are not overwriting the origin file with the résultat sed`, quelqu'un peut me aider?

Merci beaucoup!

Répondre

2

Vous devez utiliser l'option --null dans la commande grep pour sortir un octet NUL ou \0 après chaque nom de fichier dans la sortie grep. Utilisez également -i.bak dans sed pour l'édition en ligne de chaque fichier:

grep -lR --null '//360cdn.win/c\.css' . | xargs -0 sed -i.bak '1,9d' 
+1

merci beaucoup !!!! Im essayant de résoudre ceci pour les 4 dernières heures !! = D –

+1

@ RenanCorrêaPinto la façon de dire "merci" sur [so] est d'accepter * (et/ou * upvoting *) une réponse. –

0

Quel est le problème avec itérer sur les fichiers directly¹?

Et vous pouvez ajouter le -i à plat sed afin que les fichiers sont modifiés i n place

grep -r -l "//360cdn.win/c.css" | while read f 
do 
    sed -e '1,9d' -i "${f}" 
done 

¹ bien, vous pourriez avoir des problèmes si vos fichiers contiennent des sauts de ligne, etc. . mais alors ... si votre site contient des fichiers avec des nouvelles lignes, vous avez probablement d'autres problèmes de toute façon ...