Isso usa o comando para localizar os arquivos infectados e fornece a lista para xargs, que executa uma expressão na primeira linha.
find * -type f -name "*.php" -exec grep -l "cnajwp =" {} \; |
xargs sed -i -E '1s/^(<\?php) \$ocnajwp =.*$//'
De acordo com o seu exemplo de arquivo de entrada, isso deve funcionar.
Desde que você encontrou arquivos, onde a infecção foi colocada de maneira ligeiramente diferente, e você acabou com alguns arquivos, onde ambas as primeiras linhas contêm <?php
, você pode executar o seguinte para limpar esses arquivos:
find * -type f -name "*.php" -exec \
gawk -i inplace 'NR==2 && /^<\?php$/ {next} 1' {} \;