查找并删除 .htaccess 文件中的行

查找并删除 .htaccess 文件中的行

我试图弄清楚如何通过命令搜索并删除 .htaccess 文件中的行。下面一行是我想要搜索和删除的行

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

请注意此行有特殊字符

这是查找代码的命令

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

但这只能找到而不是找到并删除 .htaccess 文件中的行

我如何修改命令来查找并删除我提到的行?

答案1

这应该可以做到:

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

find 命令的输出被流程替代while循环中,如$file。然后返回该循环grep -vi $file中的每一行$file没有匹配(忽略大小写)。它会将其写入名为临时文件,然后将其复制到原件上.htaccess文件。为了安全起见,你可以在命令前添加以下行mv

mv "$file" "$file".old

这会将原始 htaccess 文件重命名为 .htaccess.old,以防出现问题。

相关内容