如何批量修改XHTML文件的img标签自闭合属性与图片src路径
XHTML文件img标签批量修改方案
前置准备
- 执行修改前请先备份所有XHTML文件,避免匹配异常导致文件损坏,可先执行命令创建备份:
mkdir -p xhtml_backup && cp *.xhtml xhtml_backup/ - 以下方案基于正则实现,适配你给出的标签格式场景,无需依赖额外的HTML解析工具。
实现方案
方案1:Perl单行命令(推荐,兼容Linux、macOS环境)
直接在当前目录执行以下命令即可完成所有.xhtml文件的批量修改:
perl -i -pe 's/<img\s+([^>]*?)src="([^"]*\/)?([^\/"]+)"([^>]*?)\s*\/?>/<img \1src="graphics\/\3"\4\/>/g' *.xhtml
正则逻辑说明:
- 自动识别img标签,拆分src属性的路径前缀、纯文件名,以及img标签的其他所有属性
- 替换时保留除src路径外的所有原有属性,将src路径替换为
graphics/加原文件名,同时统一将标签末尾修改为自闭合格式/>,兼容已经是自闭合的旧标签,不会出现重复斜杠的问题。
方案2:GNU sed命令(仅适用Linux环境)
如果你使用的是Linux系统,也可以用sed完成修改:
sed -i 's/<img\s\+\([^>]*\)src="\([^"]*\/\)*\([^\/"]\+\)"\([^>]*\)\s*\/?>/<img \1src="graphics\/\3"\4\/>/g' *.xhtml
结果校验
修改完成后可随机打开几个XHTML文件检查img标签格式,也可以直接用Firefox打开验证XML解析报错是否消失即可。
内容的提问来源于stack exchange,提问作者minto
相关产品推荐
相关产品推荐

