Jak wyszukiwać zawartość wielu plików pdf?
Jak mogę przeszukać zawartość plików PDF w katalogu/podkatalogu? Szukam narzędzi wiersza poleceń. Wygląda na to, że grep
nie można przeszukiwać plików PDF.
12 answers
Twoja dystrybucja powinna dostarczać narzędzie o nazwie pdftotext
:
find /path -name '*.pdf' -exec sh -c 'pdftotext "{}" - | grep --with-filename --label="{}" --color "your pattern"' \;
" - " jest konieczne, aby wyjście pdftotext do stdout, a nie do plików.
Opcje --with-filename
i --label=
umieszczą nazwę pliku na wyjściu grepa.
Opcjonalny znacznik --color
jest ładny i mówi grepowi, aby wyprowadzał dane za pomocą kolorów na terminalu.
(w Ubuntu, {[1] } jest dostarczany przez pakiet xpdf-utils
lub poppler-utils
.)
Ta metoda, używając pdftotext
i grep
, ma przewagę nad pdfgrep
jeśli chcesz używać funkcji GNU grep
, które pdfgrep
nie obsługuje. Uwaga : pdfgrep-1.3.x obsługuje opcję -C
do drukowania linii kontekstu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-22 13:51:35
Istnieje pdfgrep, który robi dokładnie to, co sugeruje jego nazwa.
pdfgrep -R 'a pattern to search recursively from path' /some/path
Użyłem go do prostych wyszukiwań i działało dobrze.
(istnieją pakiety w Debianie, Ubuntu i Fedorze.)
Od wersji 1.3.0 pdfgrep obsługuje wyszukiwanie rekurencyjne. Ta wersja jest dostępna w Ubuntu od Ubuntu 12.10 (Quantal).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-04 15:23:35
Recoll to fantastyczna pełnotekstowa aplikacja do wyszukiwania GUI dla systemu Unix/Linux, która obsługuje dziesiątki różnych formatów, w tym PDF. Może nawet przekazać dokładny numer strony i wyszukiwany termin zapytania do przeglądarki dokumentów, a tym samym pozwala przejść do wyniku bezpośrednio z GUI.
Recoll jest również wyposażony w wydajny interfejs wiersza poleceń i interfejs przeglądarki internetowej .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-25 17:08:06
Moja aktualna wersja pdfgrep (1.3.0) pozwala na:
pdfgrep -HiR 'pattern' /path
Podczas wykonywania pdfgrep --help
:
- H: wyświetla nazwę pliku dla każdego dopasowania.
- i: Ignoruj rozróżnienia przypadków.
- R: rekurencyjnie przeszukuje katalogi.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-22 04:40:01
Zrobiłem ten destrukcyjny mały skrypt. Baw się dobrze.
function pdfsearch()
{
find . -iname '*.pdf' | while read filename
do
#echo -e "\033[34;1m// === PDF Document:\033[33;1m $filename\033[0m"
pdftotext -q -enc ASCII7 "$filename" "$filename."; grep -s -H --color=always -i $1 "$filename."
# remove it! rm -f "$filename."
done
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-30 15:01:41
Miałem ten sam problem i dlatego napisałem skrypt, który przeszukuje wszystkie pliki pdf w podanym folderze w poszukiwaniu ciągu i drukuje pliki PDF pasujące do ciągu zapytania.
Może to ci pomoże.
Możesz go pobrać tutaj
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-24 14:04:41
Jeśli chcesz zobaczyć nazwy plików za pomocą pdftotext Użyj następującego polecenia:
find . -name '*.pdf' -exec echo {} \; -exec pdftotext {} - \; | grep "pattern\|pdf"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-24 17:17:48
Podoba mi się odpowiedź @sjr jednak wolę xargs vs-exec. Uważam, że xargs jest bardziej wszechstronny. Na przykład za pomocą-P możemy skorzystać z wielu procesorów, gdy ma to sens.
find . -name '*.pdf' | xargs -P 5 -I % pdftotext % - | grep --with-filename --label="{}" --color "pattern"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-26 18:13:38
Istnieje narzędzie open source common resource grep crgrep , które przeszukuje pliki PDF, ale także inne zasoby, takie jak zawartość zagnieżdżona w archiwach, tabele baz danych, metadane obrazów, zależności plików POM i zasoby internetowe-i ich kombinacje, w tym Wyszukiwanie rekurencyjne.
Pełny opis w zakładce Pliki prawie obejmuje to, co narzędzie obsługuje.
Stworzyłem crgrep jako narzędzie opensource.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-13 22:28:38
Najpierw przekonwertuj wszystkie pliki pdf na pliki tekstowe:
for file in *.pdf;do pdftotext "$file"; done
Następnie użyj grep
Jak zwykle. Jest to szczególnie dobre, ponieważ jest szybkie, gdy masz wiele zapytań i wiele plików PDF.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-02 22:07:10
Potrzebujesz narzędzi, takich jak pdf2text, aby najpierw przekonwertować plik pdf na plik tekstowy, a następnie wyszukać wewnątrz tekstu. (Prawdopodobnie przegapisz jakieś informacje lub symbole).
Jeśli używasz języka programowania, prawdopodobnie istnieją biblioteki pdf napisane w tym celu. np. http://search.cpan.org/dist/CAM-PDF / dla Perla
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-10 03:43:07
Spróbuj użyć 'acroread' w prostym skrypcie jak ten powyżej
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-10 09:09:49