You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何递归运行Tidy-html5(HTML Tidy)处理所有HTML文件?

当然没问题!递归处理所有子目录里的HTML文件是完全可以实现的,我给你分享两种最常用的可靠方法,适配不同的使用场景:

方法1:使用find命令(通用跨shell方案)

这是最稳妥的方法,几乎在所有类Unix系统的shell里都能生效,而且能完美处理带特殊字符(比如空格)的文件名,还不会遇到命令行长度限制的问题。

直接运行这条命令:

find ./src -type f -name "*.html" -exec tidy -mq {} +

让我拆解一下每个参数的作用:

  • ./src:指定要搜索的起始目录(就是你的HTML文件根目录)
  • -type f:只搜索文件,避免误处理目录本身
  • -name "*.html":只匹配后缀为.html的文件
  • -exec tidy -mq {} +:把找到的所有HTML文件批量传给tidy命令执行,{}会被替换成找到的文件路径,+表示一次性传递尽可能多的文件(比逐个传递效率高很多)
方法2:使用Bash的globstar特性(简洁方案,适用于Bash 4+)

如果你的系统用的是Bash 4.0及以上版本(大部分现代Linux发行版和macOS的Bash都满足),可以用更简洁的通配符写法:

  1. 先开启globstar选项(如果还没开启的话):
shopt -s globstar

这个选项允许**作为递归通配符,匹配当前目录及所有子目录。

  1. 然后直接运行tidy命令:
tidy -mq ./src/**/*.html

这里的./src/**/*.html会匹配src目录下所有层级子目录里的.html文件。

额外提示

  • 确认tidy的参数符合你的需求:-m表示直接修改原文件(in-place编辑),-q是安静模式,减少不必要的输出。如果想先预览修改效果而不实际更改文件,可以去掉-m参数,让tidy把处理后的内容输出到终端。
  • 如果你的文件名里包含空格、引号等特殊字符,优先用find的方法,它会自动处理这些情况,避免出错。
  • 如果需要对找到的文件做更多自定义处理(比如先备份再修改),可以在find的-exec里写一个小脚本,比如:
find ./src -type f -name "*.html" -exec sh -c 'cp "$1" "$1.bak" && tidy -mq "$1"' _ {} \;

这条命令会先给每个HTML文件创建备份(后缀.bak),再运行tidy修改原文件。

内容的提问来源于stack exchange,提问作者Daniel Kim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:12:09