Rechercher et supprimer une ligne dans un fichier .htaccess

0

J'essaie de comprendre comment une commande pourrait effectuer une recherche et supprimer une ligne du fichier .htaccess. la ligne suivante est la ligne que je veux rechercher et supprimer

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

Notez que cette ligne a des caractères spéciaux

C'est la commande pour trouver le code

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

Mais c’est seulement trouver pas trouver et supprimer la ligne dans le fichier .htaccess

Comment puis-je modifier la commande pour trouver et supprimer la ligne que je mentionne?

user209827
la source

Réponses:

0

Cela devrait le faire:

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

La sortie de la commande find est utilisée par substitution de processus dans le while boucle, comme $file. ensuite grep -vi $file renvoie chaque ligne $file cette ne pas match (cas ignorant). Il écrit cela dans un fichier temporaire appelé tmp , puis le copie sur l'original .htaccess des dossiers. Pour plus de sécurité, vous pouvez ajouter cette ligne supplémentaire avant le mv commander:

mv "$file" "$file".old

Cela renommera les fichiers htaccess d'origine en .htaccess.old, au cas où quelque chose serait bloqué.

stib
la source
J'ai eu les erreurs suivantes, ligne 4: erreur de syntaxe près d'un jeton inattendu <' line 4: fait & lt; & lt; (find / home * / * / public_html / -mindepth 1 - iname "\ .htaccess" - type f print0); '
user209827
Bon sang, il y avait une faute de frappe dans la commande de recherche. Devrait être -print0 vois comment tu vas maintenant.
stib
j'ai deux erreurs chaque erreur dans une ligne
user209827
ligne 4: erreur de syntaxe près du jeton inattendu `& lt; '
user209827
ligne 4: `done & lt; & lt; (find / home * / * / public_html / -mindepth 1 - iname "\ .htaccess" -type f -print0) '
user209827