特定のドライブにある複数のPDFファイルから特定の単語を検索(grep / find)する方法はありますか?

特定のドライブにある複数のPDFファイルから特定の単語を検索(grep / find)する方法はありますか?

8000を超えるPDFファイルと数百のフォルダを含む外部バックアップドライブに保存されている顧客PDFファイルを見つけようとしています。

たとえば、Xドライブから自分の顧客名「Sequoia Group」を含むすべてのPDFファイルを検索したい場合は、関連する出力を取得するのに役立つコマンドラインおよび/またはツールは何ですか?

私はzshでMacOS High Sierraを使用しており、homebrewを介してGNU grep、ack、pdfgrepもインストールしました。しかし、まだファイルが見つかりませんでした。

すべてのファイルがPDF-Backup-0001、PDF-Backup-0002などで保存されているため、ファイル名が不明です。

これまで私は成功しなかったので、次のコマンドを使用しました。

#grep -wirl "sequoia group" ./

#pdfgrep -iHncRZ "sequoia group"

#mdfind "sequoia group"

また、このコマンドラインが提案されていますが、名前をどこに入力するのかわからないので、/ pathをドライブパスに置き換え、パターンを「sequoia」に変更しましたが、まだ一致するものが見つかりませんでした。

#find /path -iname '*.pdf' -exec pdfgrep pattern {} + 
#find /Volumes/X Backup -iname '*.pdf' -exec pdfgrep "sequoia" {} + 

ベストアンサー1

ああ、なぜこんなに見慣れているのか…

検索ディレクトリのルートで端末を開き、

pdfgrep -ril  "sequoia group" >matches 2>bad.files

これにより、-r検索語のすべてのPDFファイルが再帰的に検索され、大文字と小文字が区別されず、一致するテキストではなく-iファイル名のみが返されます-l

一致するすべてのファイル名はという名前のファイルに書き込まれ、matchesエラーはという名前のファイルに書き込まれますbad.files

matches参照用に別のディレクトリにコピーできます。

while read f do; cp $f /wherever/I/want/$f; done < matches

破損しているかbad.filesOCRが正しくないため、別のディレクトリにコピーして再処理してからもう一度検索する必要があります。

findおそらく変形pdfなどがPDFあり、急いでいる場合

find /search/root/ -iname *.pdf -exec pdfgrep -il "sequoia group" {} ';' >matches 2>bad.files

上記でこれの説明をお願いしました。findあなたが受け取ったコマンドは、pdfgrepリダイレクトと同様に上記で説明されていると思います>

オプションはコマンドの出力を-exec取得し、ユーザーが表示できる場所に保存します。findfind{}

結局のところ、-execあなたは私が放し、あなたもそれを放してくれた;ことに気づくでしょう+

+-execすべての出力を収集して長い引数のリストに渡し、pdfgrepを一度実行しますfindpdfgrepファイル数が最大値を超えない限り、正常に機能します。

;-exec出力はfind一度に1つのファイルに提供されます。pdfgrep

PS。 PDFファイルをどのように見ても開いてOCR処理されたか、実際に検索可能であることを確認してください。

そうでない場合は、各ディレクトリで実行する必要があります。

find /path/to/dir/ -maxdepth 1 -type f -iname "*.pdf" -print0 | while IFS= read -r -d $'\0' line; do pdfsandwich -lang eng "$line"; done

どれくらい時間がかかっても、8,000個のファイルをすべて処理することに専念できる場合は、検索ルートを削除して-maxdepth 1指定するだけです。find

おすすめ記事