複数のキーワードで 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)
ありません。