я написал обертку Пакетное OCR & сценарий службы для тессеракта и abbyyocr11 найти здесь: https://github.com/deajan/pmOCRКак реорганизовать поиск | xargs один вкладыш в читабельный код
Основная функция команда находкой, которая проходит это аргументы xargs с -print0 в чтобы иметь дело со специальными именами файлов. Команда находки стала все более и более сложной и в конечном итоге, как очень длинный один лайнер, который становится трудно поддерживать:
find "$DIRECTORY_TO_PROCESS" -type f -iregex ".*\.$FILES_TO_PROCES" ! -name "$find_excludes" -print0 | xargs -0 -I {} bash -c 'export file="{}"; function proceed { eval "\"'"$OCR_ENGINE_EXEC"'\" '"$OCR_ENGINE_INPUT_ARG"' \"$file\" '"$OCR_ENGINE_ARGS"' '"$OCR_ENGINE_OUTPUT_ARG"' \"${file%.*}'"$FILENAME_ADDITION""$FILENAME_SUFFIX$FILE_EXTENSION"'\" && if [ '"$_BATCH_RUN"' -eq 1 ] && [ '"$_SILENT"' -ne 1 ];then echo \"Processed $file\"; fi && echo -e \"$(date) - Processed $file\" >> '"$LOG_FILE"' && if [ '"$DELETE_ORIGINAL"' == \"yes\" ]; then rm -f \"$file\"; fi"; }; if [ "'$CHECK_PDF'" == "yes" ]; then if ! pdffonts "$file" 2>&1 | grep "yes" > /dev/null; then proceed; else echo "$(date) - Skipping file $file already containing text." >> '"$LOG_FILE"'; fi; else proceed; fi'
Есть ли лучше способ передать результаты находки читаемой функции (без ущерба для слишком большая скорость)?
Спасибо.
Ответы действительны, но я думаю, что главное здесь было бы исправить * ужасный * скрипт, к которому он обращается. Существует «eval» и множество внешних переменных окружения, которые непосредственно встроены в код. Из использования 'eval' существует чрезмерное цитирование. Условные также могут быть упрощены. –
Я знаю ... в основном, поэтому я разместил это, поскольку он стал все более и более ужасным. Я бы хотел найти ... | функция x, где функция x может быть определена где-то еще в скрипте, но я не нашел способ сделать это красиво. – deajan
Даже не ясно, что вам нужно * 'eval'. Включает ли какой-либо из этих параметров синтаксис оболочки, или они просто имена команд и параметры? – chepner