我正在尝试在 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)
,仅此而已。