2

複数のキーワードで PDF ファイルを検索しようとしています。私は ~60 個の PDF と ~8 個のキーワードを持っていますが、~480 個の手動検索は好きではありません。

私は他の提案を受け入れています(以下を参照)が、現在の私のアプローチはmdfind、次のようにOS Xで使用することです:

$finds = array();
foreach ($search as $term) {
    $result = "";
    $cleanResult = array();
    $shellQuery = "mdfind -onlyin \"$wd\" \"kind:pdf $term\"";
    echo "\n\n$shellQuery\n";
    $result = shell_exec($shellQuery);
    echo $result;
    $cleanResult = split("\n", $result);
    array_pop($cleanResult);
    $finds[$term] = $cleanResult;

    unset($result);
    unset($cleanResult);
}
print_r($finds);

ただし、これは問題なくビルド$shellQueryされますが、何らかの理由で$result、コマンドが機能する場合でも常に入力されるとは限りません (つまり、値をコピー$shellQueryしてターミナル ウィンドウに貼り付けると、期待どおりに機能します)。

$search'foo'、'bar'、および 'joe' が含まれているとします。'foo' と 'joe' は正常に検出される可能性がありますが、'bar' については何も返されません。配列から「foo」と「joe」を削除して「bar」を検索すると、「bar」が見つかります。コールの間に休憩が必要ですか?

ちなみに、私の好ましいアプローチは、次のようなことです。

find . -name "*.pdf*" -exec pdftotext {} - \; | grep -i -l "foo"

しかし、これをターミナルで機能させることはできません。http://www.bluem.net/en/mac/packages/をインストールしました(コンパイルに苦労しているので、このようなパッケージ = 親指を立ててください!)、これを grep にパイプしようとするたびに (例: pdftotext myfile.pdf - | grep -i -l "foo") grep が返されるだけで、それ以上は(standard output)ありません。

4

0 に答える 0