Mac终端用sed命令批量替换HTML中旧CSS文件名

先用grep确认包含旧CSS文件名的HTML文件,再通过sed -i.bak命令全局替换并备份,结合find处理多级目录,最后验证结果并清理.bak备份文件。

在Mac终端中使用sed命令批量替换HTML文件中的旧CSS文件名非常高效,尤其适合需要修改多个HTML文件的场景。下面介绍如何安全、准确地完成这一操作。

确认目标文件和旧文件名

先明确你要修改的HTML文件路径和要替换的旧CSS文件名,比如旧文件是style-old.css,你想替换成style-new.css。可以先用grep确认哪些文件包含旧名字:

grep -l "style-old.css" *.html

这会列出所有包含该CSS引用的HTML文件。

使用sed进行就地替换(备份原文件)

Mac上的sed使用BSD版本,若要直接修改文件内容,需加上备份后缀。例如,将当前目录下所有HTML文件中的style-old.css替换为style-new.css

sed -i.bak 's/style-old.css/style-new.css/g' *.html

说明:

  • -i.bak:表示直接修改原文件,并创建以.bak为扩展名的备份文件
  • 's/旧/新/g':全局替换模式,g表示每行所有匹配项都会被替换
  • *.html:作用于所有HTML文件,也可指定具体文件名或使用find处理子目录

处理多级目录中的HTML文件

如果HTML文件分布在多个子目录中,可以用find配合sed

find . -name "*.html" -exec sed -i.bak 's/style-old.css/style-new.css/g' {} \;

这条命令从当前目录开始,查找所有.html文件并执行替换,每个文件都会生成一个.bak备份。

验证替换结果并清理备份(可选)

替换完成后,检查几个文件确保内容正确:

grep "style-new.css" index.html

确认无误后,可删除备份文件:

rm *.bak

如果是find生成的分散备份,可用:

find . -name "*.bak" -delete

基本上就这些。只要注意路径、文件名匹配准确,并保留备份,用sed批量替换HTML中的CSS引用是快速又可靠的。