Encontre e apague a linha no arquivo .htaccess

0

Estou tentando descobrir como é possível um comando pesquisar e excluir a linha do arquivo .htaccess. a seguinte linha é a linha que eu quero pesquisar e excluir

RedirectMatch \.(dynamiccontent|pl|plx|perl|cgi|php|php4|php4|php6|php3|shtml)$ http://server.linux.com/cgi-sys/movingpage.cgi

Note que esta linha tem caracteres especiais

Este é o comando para encontrar o código

find /home*/*/public_html/ -mindepth 1 -iname "\.htaccess" -type f -exec grep -Hi "RedirectMatch*" '{}' \;

Mas isso é apenas encontrar não encontrar e excluir a linha no arquivo .htaccess

Como posso modificar o comando para encontrar e excluir a linha mencionada?

    
por user209827 13.03.2014 / 05:29

1 resposta

0

Isso deve ser feito:

while IFS= read -r -d '' file; do
grep -iv "RedirectMatch*" $file>tmp
mv tmp $file
done < <(find /home*/*/public_html/ -mindepth 1 -iname "\.htaccess" -type f -print0)
rm tmp

A saída do comando find é usada pela substituição de processo no while loop, como $file . Então grep -vi $file retorna todas as linhas em $file que não corresponde (ignorando maiúsculas e minúsculas). Ele grava isso em um arquivo temporário chamado tmp e, em seguida, copia-o nos arquivos originais .htaccess . Por segurança, você pode adicionar essa linha extra antes do comando mv :

mv "$file" "$file".old

Isso renomeará os arquivos originais do htaccess para .htaccess.old, no caso de algo ser borked.

    
por 13.03.2014 / 06:12