2010-07-01 3 views
0

Привет Я пытаюсь очистить сайт от JS-троян для клиента, он добавил:Проблема форматирования находку с SED выходом

<script src='http://nt02.co.in/3'></script> всех HTML-страниц.

Поскольку это слишком много файлов в ручную чистку я пытался найти сделай так:

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

Проблема вы не разрешается выход на вход с СЭД. Так что я пытался сделать что-то вроде:

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

не сработало, он выводит файл с именем «{} .new» ...

Любые советы о том, как сделать это правильно ? Или другое решение о том, как его очистить?

ответ

1

Я думаю, что вы делаете вещи более сложными, чем они должны быть. В частности, вы хотите использовать флаг -i, который позволяет редактировать файл на месте, как вы хотите. Вы можете что-то вроде

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

или использовать сценарий, если вы чувствуете себя более комфортно, что-то вроде

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

Посмотреть http://www.cyberciti.biz/faq/unix-linux-replace-string-words-in-many-files/

+0

+1, флаг -i является то, что потребности ОП. – ninjalj

0

Непроверенные:

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

Это не может полностью вам понятно из ответа @ user379118, но флаг -i (или - in-place) позволяет вам делать редактирование на месте с помощью sed, необязательно позволяя вам на всякий случай создать копию исходного файла.

0

Спасибо за ваши ответы! я сделал так:

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

список представляет собой файл, содержащий пути к файлам, генерируется следующим образом:

grep -irl "<script src='http://nt02.co.in/3'></script>" ./folder/ > list 
Смежные вопросы