.xhtmlファイルをバッチ処理するためのxmlstarletコマンド

.xhtmlファイルをバッチ処理するためのxmlstarletコマンド

単一の.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 {} +

関連情報