2010-04-22 19 views
3

是否可以使用'grep'命令搜索多個pdf文件。它似乎不工作,人們如何搜索多個PDF文件的內容?在pdf文件上grep能正常工作嗎?

+0

我猜通過pdftotext搜索也是一個可行的選擇http://www.linuxjournal.com/video/searching-pdf-files-grep – Sam 2010-04-22 05:57:10

+1

我認爲這取決於你的實際嘗試了很多實現這一點並不多說。如果你只是做一個用戶...如果我記得adobe acrobat允許你一次搜索多個pdf。 – xenoterracide 2010-04-22 06:08:05

+0

感謝您的提示,我應該看到這個早期的Adobe Reader確實有一個功能,您可以通過它們的View - > Search選項在多個文檔中進行搜索。 我的印象是這個不存在,因此看着grep命令。 – Sam 2010-04-22 06:23:38

回答

2

使用類似Solrclucene我認爲他們可以做你想做的。

+1

我只是尋找一個簡單的搜索功能在這裏 – Sam 2010-04-22 06:18:21

+0

要注意:在未來,簡單搜索更多的是超級用戶問題,imo。我回答了這些問題,因爲這些解決方案可能會以編程方式執行。 – xenoterracide 2010-04-22 08:50:50

2

Pdf是一種二進制格式,這就是爲什麼使用grep進行搜索沒有什麼幫助。您可以搜索字符串是使用grep一個pdf這樣的:

ls dir_with_pdfs/*.pdf|xargs strings|grep "keyword" 

或者你也可以在PDF的使用pdf2text命令,然後搜索使用grep的結果。

+1

對不起,這只是無稽之談! PDF通常使用壓縮對象,即使對象是未壓縮的,文本也只是部分用pdf格式的明文編寫。 – topskip 2010-04-22 12:12:03

4

嘛,PDF是一種二進制格式,就好像它們是文字

grep -a 

的grep可以搜索二進制文件,也可以只使用pdftotext(附帶的xpdf)是這樣的:

pdftotext whee.pdf | grep pattern 
+0

grep -a ==似乎不起作用 – Sam 2010-04-22 06:01:06

+0

只有在要搜索的文件名之後傳遞「 - 」,我才能得到此命令。即 pdftotext whee.pdf - | grep模式 – Sam 2010-04-22 06:19:53

+0

哦,奇怪的...... - 意味着標準輸出(這是你需要的文本傳遞給管道才能正常工作),在我的shell中,你不需要指定afaik。 – 2010-04-22 06:24:27

3

你沒有提到你使用的操作系統,但在Mac OS X中,可以使用mdfind命令行:

mdfind -onlyin search/directory/path "kind:pdf search text" 
0

如果您pdftotext通過popplar包安裝說明中更詳細的PDF文本,那就試試這個perl腳本:

#!/usr/bin/perl 
my $p = shift; 
foreach my $fn (@ARGV) { 
    open(F,"pdftotext $fn - |"); 
    while (<F>) { print "$fn:$_" if /$p/; } 
    close(F); 
} 
1

此工具pdfgrep會做工作。它有一個類似於grep的語法。在幾個文件中搜索只是一個簡單的shell腳本。例如:

$> ls Documents/*.pdf | xargs pdfgrep -n -H "system" 
Documents/2005-DoddGutierrezRO-MAN1.pdf:1: designed episodic memory system 
Documents/2005-DoddGutierrezRO-MAN1.pdf:1: how ISAC's episodic memory system is 
Documents/2005-DoddGutierrezRO-MAN1.pdf:1: cognitive system employs a combination 
....