Як я можу рекурсивно визначити PDF-файли, які не можна шукати, та скопіювати їх до папки?


1

Далі раніше який надав рішення для сценарію:

З мого питання, можливо, можна сказати, що я користувач комп'ютера і не маю знань про програмування.

У мене є сотні PDF-файлів з можливістю пошуку і пошуку, які можна знайти в різних папках і підпапках на зовнішньому жорсткому диску.

У мене є комп'ютери під керуванням Windows 7 і Ubuntu 14.04

Як я можу змінити цей сценарій, щоб вказати батьківську папку, а також шукати вкладені папки, а потім генерувати звіт, що ідентифікує імена файлів і розташування?

Якщо побажання збулися, то це буде міститися в графічному інтерфейсі і копіювати текстові файли в загальну папку, звідки Abbyy Pro може групувати OCR.

Відповіді:


0

Ви, напевно, мали опублікувати це як коментар до іншого питання, але, знову ж таки, вам знадобилося б більше репутації для цього.

Сценарій @ davidgo вже рекурсивний (він перейде через папки та підпапки). Вам доведеться лише змінити echo "$each NOT searchable" щоб змінити те, що він робить, знаходячи файл, який не можна шукати. Це має зробити трюк:


Редагувати : Існували деякі проблеми з тим, як сценарій обробляв пробіли в іменах файлів і деякі інші проблеми тут і там. Я вирішив переробити оригінальний сценарій davidgo, щоб ви побачили ще кілька змін, ніж я сказав вище.


#! /bin/bash

if [[ ! "$#" = "2" ]]
  then
      echo "Usage: $0 /path/to/PDFDirectory /path/to/TARGETDirectory"
      exit 1
fi

PDFDIRECTORY="$1"
TARGETDIR="$2"

while IFS= read -r -d $'\0' FILE; do
    PDFFONTS_OUT="$(pdffonts "$FILE" 2>/dev/null)"
    RET_PDFFONTS="$?"
    FONTS="$(( $(echo "$PDFFONTS_OUT" | wc -l) - 2 ))"
    if [[ ! "$RET_PDFFONTS" = "0" ]]
      then
          READ_ERROR=1
          echo "Error while reading $FILE. Skipping..."
          continue
    fi
    if [[ "$FONTS" = "0" ]]
      then
          echo "NOT SEARCHABLE: $FILE -- Copying to $TARGETDIR."
          cp -v "$FILE" "$TARGETDIR/${FILE##*/}"
      else
          echo "SEARCHABLE: $FILE"
      fi
done < <(find "$PDFDIRECTORY" -type f -name '*.pdf' -print0)

echo "Done."
if [[ "$READ_ERROR" = "1" ]]
  then
      echo "There were some errors."
fi

Збережіть цей сценарій у новому порожньому файлі, назвіть його подібним copy_image_pdf і зробити його виконуваним через властивості файлу (я припускаю, що ви зробите це на Ubuntu).

Потім запустіть його з терміналу, надаючи каталог PDF і цільову директорію, де повинні бути скопійовані файли PDF, наприклад:

copy_image_pdf /media/data/pdffiles /media/data/pdffiles-to-be-ocred
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.