Извлеките определенный PDF из zip-файла с большим количеством pdfs

Данный:

  • Название и местоположение zip-файла. Пример: collectionOfPdfFiles2017.zip
    • Zip-файл является набором PDFs без структуры папок
  • Название файла PDF в zip-файле. Пример: someFileFrom2017.pdf

Требуемый:

  • Консоль способ извлечь именованный PDF из данного zip-файла
  • Файл должен быть не изменен.
    • В основном извлеченный файл должен быть в том же условии, как я получил бы его путем извлечения целого архива и копирования требуемого файла вручную.
  • Идеально в папку назначения. Но это - роскошь.

Как я делаю это? В настоящее время у меня есть сценарий, который будет искать строки во внутренностях файлов PDF, АРХИВИРУЕТ и распечатывает название zip и PDF в нем. Я отправлю это для хорошего messure:

    #!/bin/bash
    echo "Hi I'll find text in pdf files that are stored inside zip files."
    echo ""
    echo "Enter search string:"
    read searchString

    echo "Ok. I'll search all zip files for content with this text..."

    for z in *.zip
    do
    zipinfo -1 "$z" |  # Get the list of filenames in the zip file
        while IFS= read -r f
        do
        unzip -p "$z" "$f" | # Extract each PDF to standard output instead of a file
            pdftotext - - | # Then convert it to text, reading from stdin, writing to stdout
            grep -q $searchString && echo "$z -> $f" # And finally grep the text
        done
    done 

Этот сценарий был создан благодаря этому ответу.

2
задан 11 December 2019 в 10:46

1 ответ

расстегните молнию на определенном файле от zip-архива

unzip -j "myarchive.zip" "in/archive/file.pdf" -d "/destination/path/"

В Вашем сценарии

# Set a destination path
dest="/path/to/unzip/to"
# dump pdf to temp text file
tempfile=$(mktemp)
# unzip the file to stdOut and convert it to text
unzip -p "$z" "$f" | pdftotext - $tempfile
if grep -q $searchString $tempfile; then
    unzip -j "$z" "$f" -d "$dest"
    # some text output
    echo "$z -> $f"
fi
rm $tempfile
2
ответ дан 21 December 2019 в 23:36

Другие вопросы по тегам:

Похожие вопросы: