
誰かがこの問題を解決するのに役立つことを願っています。
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の構成方法(特にテキストの結合方法)によって異なります。