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

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

Encontrei algum malware em meu servidor Linux e estou tentando removê-lo de muitos arquivos php.

Eu tentei infinitamente com grep | sed e grep | tr e não conseguia nem apagar uma simples sequência de texto, obtendo erros diversos.

Ao tentar:

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

Recebo uma mensagem de erro:

não consigo lernome do arquivo.php

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

Minha tarefa final é excluir uma longa sequência de código de todos os arquivos - uma que inclua alguns símbolos $,!,?,<,>,\," - precisarei colocá-los com barra invertida?

Responder1

Você deve restaurar do backup ou do controle de origem como@Esteirasugerido porque, caso contrário, você não poderá ter 100% de certeza de que limpou tudo.

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

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

Responder2

grep -l @error * | xargs sed -i s/error/test/g

vai funcionar.

informação relacionada