![用于批处理 .xhtml 文件的 xmlstarlet 命令](https://linux22.com/image/196500/%E7%94%A8%E4%BA%8E%E6%89%B9%E5%A4%84%E7%90%86%20.xhtml%20%E6%96%87%E4%BB%B6%E7%9A%84%20xmlstarlet%20%E5%91%BD%E4%BB%A4.png)
我尝试过 xmlstarlet 来处理单个 .xhtml 文件。
xmlstarlet fo --omit-decl --recover --html file.xhtml
此命令处理单个文件并仅在终端上打印输出。如何批量处理多个文件并将结果保存stdout
为文件? (同名,通过为文件添加前缀或后缀)
答案1
下面的代码是从末尾稍微修改的变体我的答案对于同一主题的上一个问题,使用相同的方法进行实际的批处理。
如果您要处理的文件全部匹配模式./*.xhtml
,即,如果它们具有.xhtml
文件名后缀并且位于当前目录中,那么您将能够使用简单的 shell 循环使用上述命令中的任何一个来处理所有这些文件。
for name in ./*.xhtml; do
xmlstarlet fo --omit-decl --recover --html "$name" >"$name".new
done
循环中的命令将生成的文档输出到与旧文件同名但.new
附加文件名后缀的文件。
要对目录层次结构(即具有多个子目录的目录)中的所有 XHTML 文件运行上述命令,您可以使用find
.
find . -type f -name '*.xhtml' -exec sh -c '
for name do
xmlstarlet fo --omit-decl --recover --html "$name" >"$name".new
done' sh {} +