Removendo uma longa string de arquivos php - usando grep e sed?

0

Encontrei alguns malwares no meu servidor Linux e estou tentando removê-los de muitos arquivos php.

Eu tentei infinitamente com o grep | sed e grep | tr e nem sequer pode apagar uma cadeia de texto simples, recebendo erros diferentes.

Ao tentar:

grep -l '@error' * | xargs -0 sed -i 's/error/nothing/g'   

Eu recebo uma mensagem de erro:

can't read filename.php

Usando o Terminal no Mac - talvez seja um problema de sintaxe do OSX?

A minha última tarefa é eliminar uma longa cadeia de código de todos os ficheiros - um que inclua alguns símbolos $,!,?, <, & \, "- será necessário invertê-los?

    
por Nona Man 06.04.2012 / 10:00

2 respostas

2

Você deve restaurar a partir do backup ou do controle de origem, como @Mat sugerido, porque, do contrário, você não pode ter 100% de certeza limpou tudo.

O problema com seu comando é o -0 sinalizador para xargs , porque dessa forma xargs está esperando argumentos terminados em nulo, o que não funciona com a saída de grep -l . Basta soltar o -0 e ele funcionará, desde que os nomes dos arquivos não possuam espaços em branco.

grep -l '@error' * | xargs sed -i 's/error/nothing/g'
    
por 06.04.2012 / 11:55
0
grep -l @error * | xargs sed -i s/error/test/g

funcionará.

    
por 06.04.2012 / 11:58