Làm cách nào tôi có thể tìm kiếm nội dung của tệp PDF trong thư mục / thư mục con? Tôi đang tìm kiếm một số công cụ dòng lệnh. Dường như grep
không thể tìm kiếm tệp PDF.
Làm cách nào tôi có thể tìm kiếm nội dung của tệp PDF trong thư mục / thư mục con? Tôi đang tìm kiếm một số công cụ dòng lệnh. Dường như grep
không thể tìm kiếm tệp PDF.
Câu trả lời:
Phân phối của bạn sẽ cung cấp một tiện ích gọi là pdftotext
:
find /path -name '*.pdf' -exec sh -c 'pdftotext "{}" - | grep --with-filename --label="{}" --color "your pattern"' \;
"-" là cần thiết để có đầu ra pdftotext thành thiết bị xuất chuẩn, không cho các tệp. Các tùy chọn --with-filename
và --label=
sẽ đặt tên tệp trong đầu ra của grep. --color
Cờ tùy chọn là tốt và báo cho grep xuất ra bằng cách sử dụng màu trên thiết bị đầu cuối.
(Trong Ubuntu, pdftotext
được cung cấp bởi gói xpdf-utils
hoặc poppler-utils
.)
Phương pháp này, sử dụng pdftotext
và grep
, có lợi thế hơn pdfgrep
nếu bạn muốn sử dụng các tính năng của GNU grep
mà pdfgrep
không hỗ trợ. Lưu ý : pdfgrep-1.3.x hỗ trợ -C
tùy chọn để in dòng ngữ cảnh.
grep
bộ lọc tên tệp được in.
pdfgrep
giải pháp tốt cho các tìm kiếm thực sự nhanh chóng và đơn giản, thường thì tôi muốn có một số ngữ cảnh, vì một dòng duy nhất sẽ không đủ hữu ích - vì vậy tôi đã thêm vào câu trả lời này: Chẳng hạn, bạn có thể thêm tùy chọn -C5 trước "mẫu của bạn" để bao gồm 5 dòng ngữ cảnh cho đầu ra - pdfgrep không hỗ trợ điều này
pdfgrep
vô dụng, nó báo cáo một lượng rác khổng lồ trên các tệp mà nó không thể xử lý. Giải pháp của bạn mặt khác đã giúp. Vì vậy, xin vui lòng không xóa nó, thậm chí sau 3 năm nó vẫn hữu ích!
Có pdfgrep , chính xác những gì tên của nó gợi ý.
pdfgrep -R 'a pattern to search recursively from path' /some/path
Tôi đã sử dụng nó cho các tìm kiếm đơn giản và nó hoạt động tốt.
(Có các gói trong Debian, Ubuntu và Fedora.)
Vì phiên bản 1.3.0 pdfgrep hỗ trợ tìm kiếm đệ quy. Phiên bản này có sẵn trong Ubuntu kể từ Ubuntu 12.10 (Định lượng).
pdfgrep
hiện có tùy chọn đệ quy đó, bao gồm cả -R
theo liên kết tượng trưng
Recoll là một ứng dụng tìm kiếm GUI toàn văn tuyệt vời cho Unix / Linux, hỗ trợ hàng tá định dạng khác nhau, bao gồm PDF. Nó thậm chí có thể chuyển số trang chính xác và thuật ngữ tìm kiếm của truy vấn cho người xem tài liệu và do đó cho phép bạn chuyển đến kết quả ngay từ GUI của nó.
Recoll cũng đi kèm với giao diện dòng lệnh khả thi và giao diện trình duyệt web .
recoll / xapian
trong dòng lệnh (không phải GUI)? Cảm ơn!
recoll
hướng dẫn sử dụng có thể chứa một số gợi ý, nhưng cung cấp một thay kỹ thuật và "off-topic" đọc ...
pwd
ext: pdf 'neuro *' - stackoverflow đã ăn các backticks xung quanh pwd.
Tôi đã thực hiện kịch bản nhỏ phá hoại này . Hãy vui vẻ với nó.
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.
bạn nên đặt nó vào grep
.
Tôi thích câu trả lời của @ sjr tuy nhiên tôi thích xargs vs -exec. Tôi thấy xargs linh hoạt hơn. Ví dụ với -P, chúng ta có thể tận dụng nhiều CPU khi thực hiện điều đó hợp lý.
find . -name '*.pdf' | xargs -P 5 -I % pdftotext % - | grep --with-filename --label="{}" --color "pattern"
xargs
'khả năng xử lý song song. Lưu ý rằng bạn --label
lựa chọn đối số sẽ theo nghĩa đen {}
, bởi vì các grep
lệnh được bây giờ không còn được thực hiện trong bối cảnh find
's exec
.
Tôi có cùng một vấn đề và do đó tôi đã viết một tập lệnh tìm kiếm tất cả các tệp pdf trong thư mục được chỉ định cho một chuỗi và in các tệp PDF phù hợp với chuỗi truy vấn.
Có lẽ điều này sẽ hữu ích cho bạn.
Bạn có thể tải nó ở đây
pdfgrep
giải pháp hoặc một lớp lót của nó và nó đã để lại cho tôi một quá trình đang diễn ra bằng cách sử dụng 100% luồng CPU ngay cả sau khi tôi Ctrl-C để chấm dứt nó.
Có một tiện ích khác gọi là ripgrep-all , dựa trên ripgrep .
Nó có thể xử lý nhiều hơn chỉ các tài liệu PDF, như các tài liệu và phim Office và tác giả cho rằng nó nhanh hơn pdfgrep
.
Cú pháp lệnh để tìm kiếm đệ quy thư mục hiện tại và lệnh thứ hai chỉ giới hạn ở các tệp PDF:
rga 'pattern' .
rga --type pdf 'pattern' .
Có một công cụ grep tài nguyên chung nguồn mở crgrep tìm kiếm trong các tệp PDF nhưng cũng có các tài nguyên khác như nội dung được lưu trữ trong kho lưu trữ, bảng cơ sở dữ liệu, siêu dữ liệu hình ảnh, phụ thuộc tệp POM và tài nguyên web - và kết hợp cả hai bao gồm tìm kiếm đệ quy.
Mô tả đầy đủ trong tab Tệp bao gồm rất nhiều những gì công cụ hỗ trợ.
Tôi đã phát triển crgrep như một công cụ mã nguồn mở.
Đầu tiên chuyển đổi tất cả các tệp pdf của bạn thành các tệp văn bản:
for file in *.pdf;do pdftotext "$file"; done
Sau đó sử dụng grep
như bình thường. Điều này đặc biệt tốt vì nó nhanh khi bạn có nhiều truy vấn và nhiều tệp PDF.
ag
github.com/ggreer/the_silver_searcher . Có khả năng phân tích cú pháp tại psychedeliks Gb bằng micro giây. Các tập tin phẳng cho cuộc sống
Bạn cần một số công cụ như pdf2text để trước tiên chuyển đổi pdf của bạn thành tệp văn bản và sau đó tìm kiếm bên trong văn bản. (Bạn có thể sẽ bỏ lỡ một số thông tin hoặc biểu tượng).
Nếu bạn đang sử dụng ngôn ngữ lập trình, có thể có các thư viện pdf được viết cho mục đích này. ví dụ: http://search.cpan.org/dist/CAM-PDF/ cho Perl