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'