Как заставить эту команду Java действовать для каждого файла, найденного командой find?

Как заставить эту команду Java действовать для каждого файла, найденного командой find?

У меня есть эта команда внутри скрипта оболочки Bash, цель которого — применить команду Java,htmlcompressor, для каждого 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).

Кроме того, вам, возможно, захочется вручную запустить одну из полученных команд, чтобы убедиться, что она работает правильно.

Связанный контент