
У меня есть эта команда внутри скрипта оболочки 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
).
Кроме того, вам, возможно, захочется вручную запустить одну из полученных команд, чтобы убедиться, что она работает правильно.