디렉토리 / 하위 디렉토리에서 PDF 파일의 내용을 어떻게 검색 할 수 있습니까? 몇 가지 명령 줄 도구를 찾고 있습니다. grep
PDF 파일을 검색 할 수없는 것 같습니다 .
디렉토리 / 하위 디렉토리에서 PDF 파일의 내용을 어떻게 검색 할 수 있습니까? 몇 가지 명령 줄 도구를 찾고 있습니다. grep
PDF 파일을 검색 할 수없는 것 같습니다 .
답변:
배포판에는 pdftotext
다음과 같은 유틸리티가 있어야합니다 .
find /path -name '*.pdf' -exec sh -c 'pdftotext "{}" - | grep --with-filename --label="{}" --color "your pattern"' \;
"-"는 pdftotext를 파일이 아닌 stdout에 출력해야합니다. --with-filename
및 --label=
옵션은 GREP의 출력에 파일 이름을 넣어 것입니다. 옵션--color
플래그는 좋고 터미널에서 색상을 사용하여 출력하도록 grep에 지시합니다.
(우분투에서는 pdftotext
패키지 xpdf-utils
또는에서 제공됩니다 poppler-utils
.)
이 방법을 사용 pdftotext
하고 grep
,보다 이점이있다 pdfgrep
당신이 GNU의 기능을 사용하려면 지원하지 않습니다. 참고 : pdfgrep-1.3.x는 상황에 맞는 인쇄 옵션을 지원합니다 .grep
pdfgrep
-C
grep
인쇄 된 파일 이름을 필터링하므로 편집 한 "(Edit by -kp-)"편집 기능이 작동하지 않습니다 .
pdfgrep
솔루션은 정말 빠르고 간단한 검색에 적합하지만 한 줄로도 도움이되지 않으므로 문맥을 얻고 싶을 때가 있습니다. "당신의 패턴"전에-C5 옵션은 출력 컨텍스트의 5 개 행을 포함하는 - pdfgrep이 지원하지 않습니다
pdfgrep
있으며 쓸모가 없으며 처리 할 수없는 파일에 엄청난 양의 쓰레기를보고합니다. 반면에 귀하의 솔루션이 도움이되었습니다. 3 년이 지난 후에도 삭제해도 도움이되지 않습니다.
pdfgrep 이 있는데 , 이름에서 알 수있는 것과 정확히 일치합니다.
pdfgrep -R 'a pattern to search recursively from path' /some/path
간단한 검색에 사용했으며 정상적으로 작동했습니다.
(데비안, 우분투 및 페도라에는 패키지가 있습니다.)
버전 1.3.0부터 pdfgrep 는 재귀 검색을 지원합니다. 이 버전은 Ubuntu 12.10 (Quantal)부터 Ubuntu에서 사용할 수 있습니다.
pdfgrep
은 이제 -R
심볼릭 링크를 포함한 재귀 옵션을 가지고 있습니다
리콜 은 PDF를 포함하여 수십 가지 형식을 지원하는 Unix / Linux 용 환상적인 전체 텍스트 GUI 검색 응용 프로그램입니다. 쿼리의 정확한 페이지 번호와 검색어를 문서 뷰어로 전달할 수 있으므로 GUI에서 결과로 바로 이동할 수 있습니다.
Recoll은 또한 실행 가능한 명령 행 인터페이스 및 웹 브라우저 인터페이스 와 함께 제공 됩니다.
recoll / xapian
명령 줄 (비 GUI)에? 감사!
pwd
ext : pdf 'neuro *'-pwd 주위의 백틱을 먹었습니다.
나는이 파괴적인 작은 스크립트를 만들었습니다 . 그것으로 재미있게 보내십시오.
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
}
$filename.
에을 파이프해야합니다 grep
.
나는 @ sjr의 대답을 좋아하지만 xargs 대 -exec를 선호합니다. 나는 xargs가 더 다재다능하다는 것을 안다. 예를 들어 -P를 사용하면 여러 CPU를 사용할 수 있습니다.
find . -name '*.pdf' | xargs -P 5 -I % pdftotext % - | grep --with-filename --label="{}" --color "pattern"
xargs
'병렬 처리 기능 에 대한 흥미로운 점 . 당신의 것을 참고 --label
옵션 인수가 없을 것 그대로 {}
때문에, grep
명령이 이제 더 이상의 컨텍스트에서 실행되는 find
의 exec
.
pdftotext로 파일 이름을 보려면 다음 명령을 사용 하십시오 .
find . -name '*.pdf' -exec echo {} \; -exec pdftotext {} - \; | grep "pattern\|pdf"
라는 또 다른 유틸리티가 ripgrep 모두 를 기반으로, ripgrep은 .
Office 문서 및 영화와 같은 단순한 PDF 문서 이상을 처리 할 수 있으며 저자 는 문서 보다 빠릅니다.pdfgrep
.
현재 디렉토리를 재귀 적으로 검색하기위한 명령 구문이며 두 번째 디렉토리는 PDF 파일로만 제한됩니다.
rga 'pattern' .
rga --type pdf 'pattern' .
오픈 소스 공통 자원 grep 도구 crgrep가 있습니다PDF 파일 내에서 검색하는 아카이브, 데이터베이스 테이블, 이미지 메타 데이터, POM 파일 종속성 및 웹 자원과 같은 다른 자원과 재귀 검색을 포함한 이러한 자원의 조합을 검색 이 있습니다.
파일 탭 아래의 전체 설명은 도구가 지원하는 내용을 거의 다룹니다.
저는 오픈 소스 도구로 crgrep을 개발했습니다.
먼저 모든 PDF 파일을 텍스트 파일로 변환하십시오.
for file in *.pdf;do pdftotext "$file"; done
그런 다음 grep
정상적으로 사용하십시오 . 여러 개의 쿼리와 많은 PDF 파일이있을 때 빠르기 때문에 특히 좋습니다.
ag
github.com/ggreer/the_silver_searcher 와 함께 사용 하면 됩니다. 사이키델릭 Gb에서 마이크로 초 단위로 구문 분석 할 수 있습니다. 평생 플랫 파일
먼저 pdf를 텍스트 파일로 변환 한 다음 텍스트 내부를 검색하려면 pdf2text와 같은 도구가 필요합니다. (아마도 일부 정보 나 기호가 누락 될 수 있습니다).
프로그래밍 언어를 사용하는 경우이 목적으로 작성된 pdf 라이브러리가있을 수 있습니다. 예 : Perl의 경우 http://search.cpan.org/dist/CAM-PDF/