Shell-Script

用於批處理 .xhtml 文件的 xmlstarlet 命令

  • October 3, 2021

我已經嘗試使用 xmlstarlet 來處理單個 .xhtml 文件。

xmlstarlet fo --omit-decl --recover --html file.xhtml 

此命令處理單個文件並僅在終端上列印輸出。如何批量處理多個文件並將結果保存stdout為文件?(具有相同的名稱,通過為文件添加前綴或後綴)

下面的程式碼是我對您之前關於同一主題的問題的回答末尾的一個稍微修改的變體,使用相同的方式進行實際批處理。

如果您要處理的文件都與 pattern 匹配./*.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 {} +

引用自:https://unix.stackexchange.com/questions/671640