単一の.xhtmlファイルを処理するためにxmlstarletを使用してみました。
xmlstarlet fo --omit-decl --recover --html file.xhtml
このコマンドは単一のファイルを処理し、端末からのみ出力を印刷します。複数のファイルをバッチ処理し、結果をstdout
ファイルとして保存する方法は? (ファイルにプレフィックスまたはサフィックスを追加して同じ名前)
答え1
以下のコードは最後に少し修正されたバリエーションです。私の答え同じトピックに関する以前の質問と同様に、実際のバッチにも同じアプローチが使用されました。
処理するファイルがすべてパターンと一致する場合、./*.xhtml
つまり.xhtml
ファイル名のサフィックスがあり、現在のディレクトリにある場合は、上記のコマンドのいずれかを使用して単純なシェルループを使用してすべてのファイルを処理できます。 。
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 {} +