Bash: PDF 파일에서 키워드를 검색하고 페이지를 반환합니다.

Bash: PDF 파일에서 키워드를 검색하고 페이지를 반환합니다.

누군가가 이 문제를 해결하는 데 도움을 줄 수 있기를 바랍니다.

PDF 파일(실제로는 PDF 파일 폴더) 내에서 키워드 검색을 수행하고 키워드가 발견된 파일 이름을 포함한 모든 페이지를 반환해야 하는 작은 스크립트를 찾고 있습니다.

다음 스크립트를 찾았습니다 (여기https://ubuntuforums.org/showthread.php?t=1368062):

#!/bin/bash

[ "$*" ] || { echo "You forgot a search string!" ; exit 1 ; }

found=1

for file in ./src/*.pdf ; do
   [ "$file" = '*.pdf' ] && echo "No PDF files found!" && exit 1
   pages=$(pdfinfo "$file" | awk '/Pages:/ { print $NF }')
   for ((i=1 ; i<=$pages ; i++)) ; do
      match=$(pdftotext -q -f $i -l $i "$file" - | grep -m 1 "$*")
      [ "$match" ] && echo "Page $i in $file" && found=0
   done
done

[ "$found" -ne 0 ] && echo "No search string matches found"

대부분의 조회수를 반환했지만 Adobe Acrobat Reader 및 Mac Preview의 검색 기능은 더 많은 일치 항목을 반환했습니다. 문제가 무엇인지 아는 사람이 있나요?

내 생각에는 검색 키워드 앞이나 뒤의 문자에서 실패하는 것 같지만 그것은 단지 추측일 뿐입니다.

페이지당 조회수까지 포함하면 정말 완벽할 것 같아요!

답변1

나는 사용할 것이다pdfgrep:

pdfgrep -p "your search string" src/*.pdf

각 페이지의 개수와 함께 일치하는 페이지 번호가 출력됩니다.

이는 누락된 일치 항목을 처리하지 못할 수 있습니다. 그 이유는 PDF 구성 방식(특히 텍스트 결합 방식)에 따라 다릅니다.

관련 정보