Скрипт, позволяющий другому скрипту последовательно обрабатывать все файлы?

Скрипт, позволяющий другому скрипту последовательно обрабатывать все файлы?

Я нашел отлично работающий скрипт для преобразования PDF-файлов в формат TXT с помощью OCR.

Но он конвертирует только один файл pdf каждый раз. Мне нужно конвертировать их массово.

Я не разбираюсь в написании сценариев. Сценарий ниже.

Как мне их массово конвертировать?

#!/bin/bash

## script to:
##   *  split a PDF up by pages
##   *  convert them to an image format
##   *  read the text from each page
##   *  concatenate the pages


## pass name of PDF file to script
INFILE=$1

## split PDF file into pages, resulting files will be
## numbered: pg_0001.pdf  pg_0002.pdf  pg_0003.pdf
pdftk $INFILE burst

for i in pg*.pdf ; do

    ## convert it to a PNG image file
    convert -density 200 -quality 100 $i ${i%.pdf}.png

    ## read text from each page
    tesseract ${i%.pdf}.png ${i%.pdf}.txt

done

## concatenate the pages into a single text file
cat pg*.txt > ${INFILE%.pdf}.txt

exit

Примечание: Я читал похожие вопросы, но не смог понять.

решение1

Вы можете изменить свой скрипт:

# instead of INFILE=$1
for INFILE
do
#...

    for i in pg*.pdf ; do
        #...    
    done

    ## concatenate the pages into a single text file
    cat pg*.txt > ${INFILE%.pdf}.txt
done

Затем назовите свой скрипт следующим образом:

some-script.sh 1.pdf 2.pdf #...

Цикл bash for, если не указано ничего, по чему можно было бы зациклиться, проходит по всем аргументам командной строки. Следовательно,

for INFILE

эквивалентно:

for INFILE in "$@"

решение2

Насколько я понял из вашего вопроса, я предполагаю, что вы ожидаете вот этого:

for each in *.pdf
do
  your_conv_script.sh $each
done

где your_conv_script.shнаходится скрипт, который вы обозначили выше.

Также обратите внимание, что вам необходимо очистить временно созданные файлы.

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