Wie kann ich erreichen, dass dieser Java-Befehl auf jede Datei einwirkt, die mit einem Suchbefehl gefunden wird?

Wie kann ich erreichen, dass dieser Java-Befehl auf jede Datei einwirkt, die mit einem Suchbefehl gefunden wird?

Ich habe diesen Befehl in einem Bash-Shell-Skript, dessen Zweck es ist, einen Java-Befehl anzuwenden,HTML-Kompressor, zu jeder HTML-Datei, die in einem Verzeichnis gefunden wird:

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

Obwohl die Ausgabe in der Befehlszeile darauf hinzuweisen scheint, dass die einzelnen Dateien gefunden und etwas damit gemacht wird, werden die Ergebnisse nicht tatsächlich in die Dateien geschrieben.

Laut der Dokumentation für htmlcompressor ist die Verwendung folgende:

Verwendung: java -jar htmlcompressor.jar [Optionen] [Eingabe]

Am Ende sollte also eine Eingabedatei mit dem Namen stehen, aber ich dachte, der findBefehl würde das übernehmen. Aber da liege ich wohl falsch.

Was kann ich tun, damit es tatsächlich auf die gefundenen Dateien reagiert?

Antwort1

Ihre Angaben scheinen richtig zu sein. Sie können die javakorrekte Ausführung überprüfen, indem Sie Folgendes echoin den Befehl einfügen:

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

(unter der Annahme eines ordnungsgemäß POSIX-kompatiblen Systems, das über nicht integrierte Versionen der integrierten Shell-Funktionen im Standard verfügt PATH).

Darüber hinaus möchten Sie möglicherweise einen der resultierenden Befehle manuell ausführen, um zu überprüfen, ob er ordnungsgemäß funktioniert.

verwandte Informationen