環境:Windows11+Ubuntu/WSL2
実施したいこと:特定のディレクトリをカレントとして、そこのディレクトリ以下にある全てのディレクトリ内のPDFファイルを網羅的に調べて、特定文字列を含むPDFのリストを取得する。
例えば、複数のPDFファイルが個別にディレクトリにおさまっていて、それら全体がディレクトリごとzip化されているような場合に、ちゃんと分析しようと思えばテキスト解析してデンドログラム作る程度の処理を書けばよいけど、そこまでもいらなくて、単にある種の文字列を含むかどうかだけでフィルタをかけたいような状況なら単純に下記。
#!/bin/bash
search_str=$1
find . -type f -name "*.pdf" | while read -r pdf_file; do
if pdfgrep -q "$search_str" "$pdf_file"; then
echo "Found '$search_str' in "pdf_file"
fi
done
上記のスクリプトの前提は、pdfgrepのコマンドインストール済(下記をUbuntuのターミナル上で事前に実施しておく)
$ sudo apt-get install pdfgrep
例えば、Windows11的にDドライブの/work/tmpで展開している時に、”あいうえお”を含むPDFファイルを探したいなら、上記スクリプト名がsearchstr.shだったとして:
$ cd /mnt/d/work/tmp
$ searchstr.sh あいうえお
すればよい。標準出力への印字部分は、ファイルにリダイレクトしてもよい。複数の引数に応用するのも難しくないので試されたい。