Experimente com fgrep ou, equivalentemente, grep -F . Isso interpretará o padrão como uma string fixa.
Você também pode colocar essa única string em um arquivo (por si só) e usar grep -f filename para especificar o arquivo. Você ainda precisará da bandeira -F .
Veja man grep para outras opções; existem vários que podem ser úteis.
Para várias formas de excluir uma linha que corresponde a um determinado padrão, consulte o link .
Juntando tudo, uma abordagem é:
- Coloque essa linha de texto em um arquivo por si só. Chame de "patternfile".
- Executar
grep -lrFf patternfile . > filelist
- Edite o
filelist para remover a linha ./patternfile
- Executar
for i in $(cat filelist) ; do grep -vf patternfile $i > temp && chmod --reference=$i temp && mv temp $i ; done
Na etapa 2, as opções do grep são: -l para listar os arquivos correspondentes; -r para recursar em subdiretórios; -F para usar uma string fixa como um padrão para corresponder; -f para usar o arquivo patternfile como o padrão a ser correspondido; então, é claro, > filelist para criar um arquivo contendo a lista de arquivos correspondentes.
Na etapa 4, grep simplesmente usa o sinal -v para imprimir não linhas de correspondência e, em seguida, chmod garante que você não terá problemas de permissões e mv coloca o arquivo de volta no lugar.
Pode haver maneiras melhores, mas acho que isso será suficiente.
EDIT: Se você estiver executando isso como root , e nem todos esses arquivos pertencerem a root, faça a seguinte versão revisada da etapa 4:
for i in $(cat filelist) ; do grep -vf patternfile $i > temp && chown --reference=$i temp && chmod --reference=$i temp && mv temp $i ; done
O passo 4 original é bom se você for o proprietário de todos os arquivos.