find コマンドで見つかった各ファイルに対してこの Java コマンドを実行するにはどうすればよいでしょうか?

find コマンドで見つかった各ファイルに対してこの Java コマンドを実行するにはどうすればよいでしょうか?

私はこのコマンドをBashシェルスクリプト内に置き、Javaコマンドを適用することを意図しています。htmlコンプレッサーディレクトリ内にある各 HTML ファイルに対して、

find $DIR -type f -name '*.html' -exec java -jar $BASEDIR/Upload/htmlcompressor-1.5.3.jar --remove-intertag-spaces {} \;

ただし、コマンド ラインの出力は、各ファイルを見つけてそれに対して何かを実行していることを示しているように見えますが、実際には結果をファイルに書き込んでいません。

htmlcompressor のドキュメントによると、使用方法は次のとおりです。

使用方法: java -jar htmlcompressor.jar [オプション] [入力]

つまり、最後に指定された入力ファイルがあるはずですが、findコマンドがそれを処理していると思っていました。しかし、それは間違っているようです。

見つけたファイルに対して実際に動作させるにはどうすればよいですか?

答え1

提供されたものは正しいようです。コマンドに以下をjava挿入することで、正しく呼び出されていることを確認できます。echo

find $DIR -type f -name '*.html' -exec echo java -jar $BASEDIR/Upload/htmlcompressor-1.5.3.jar --remove-intertag-spaces {} \;

(標準のシェル組み込みの非組み込みバージョンを持つ、適切に POSIX に準拠したシステムを想定PATH)。

さらに、結果のコマンドの 1 つを手動で実行して、正しく動作していることを確認することもできます。

関連情報