Làm cách nào để 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 một số công cụ dòng lệnh. Có vẻ như grep
không thể tìm kiếm tệp PDF.Cách tìm kiếm nội dung của nhiều tệp pdf?
Trả lời
phân phối của bạn nên 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"' \;
Các "-" là cần thiết để có đầu ra pdftotext để stdout, chưa tập tin. Các tùy chọn --with-filename
và --label=
sẽ đặt tên tệp vào đầu ra của grep. Cờ tùy chọn --color
rất đẹp và cho grep biết đầu ra bằng các màu trên thiết bị đầu cuối.
(Trong Ubuntu, pdftotext
được cung cấp bởi các 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 tính năng của GNU grep
rằng pdfgrep
không ủng hộ. Lưu ý: pdfgrep-1.3.x hỗ trợ tùy chọn -C
để in dòng ngữ cảnh.
Tác phẩm này hoạt động nhưng không hiển thị tên tệp phù hợp. Bất kỳ ý tưởng? –
@Kurt Pfeifle Chỉnh sửa "(Chỉnh sửa bởi -kp-)" bạn đã thực hiện không hoạt động vì 'grep' lọc các tên tệp đã in. –
@sjr no, trong khi giải pháp 'pdfgrep' là tốt cho các tìm kiếm thực sự nhanh chóng và đơn giản, thường tôi muốn nhận được một số ngữ cảnh, vì một dòng đơn sẽ không đủ hữu ích - vì vậy khi tôi thêm vào câu trả lời này: Ví dụ , 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 –
Bạn cần một số công cụ như pdf2text để chuyển đổi pdf đầu tiê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
hãy thử sử dụng 'acroread' trong một kịch bản đơn giản như trên
Có pdfgrep, mà thực hiện chính xác những gì tên của nó cho thấy.
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ó gói trong Debian, Ubuntu và Fedora.)
Kể từ 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 (Quantal).
Từ Natty (Ubuntu 11.04) trở lên (Xem http://packages.ubuntu.com/search? keywords = pdfgrep & searchon = tên & suite = all & section = all) –
@pavon 'pdfgrep' hiện có tùy chọn đệ quy, bao gồm' -R' để theo dõi các liên kết tượng trưng –
Tôi đã thực hiện phá hủy tập lệnh nhỏ 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
}
+1. Nhưng thay vì '$ filename.' bạn nên đặt nó vào' grep'. –
Nếu bạn muốn xem tên tập tin với pdftotext sử dụng lệnh sau:
find . -name '*.pdf' -exec echo {} \; -exec pdftotext {} - \; | grep "pattern\|pdf"
Điều này cũng hiển thị tên tệp không có mẫu nhưng nó rất hữu ích .. – Raghav
Recoll là toàn văn GUI ứng dụng tìm kiếm tuyệt vời cho Unix/Linux hỗ trợ hàng chục đị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à cụm từ tìm kiếm của một truy vấn đến trình xem tài liệu và do đó cho phép bạn chuyển đến kết quả ngay từ GUI của nó.
Thu hồi cũng đi kèm với giao diện dòng lệnh khả thi và web-browser interface.
Đã kiểm tra, hoạt động tốt. Cảm ơn –
@Glutanimate Nó sẽ giúp (tôi và có thể cả những người khác nữa) nếu bạn có thể thêm một ** ví dụ ** liên quan đến câu hỏi gốc * (công cụ dòng lệnh để tìm kiếm nhiều pdf): * Tôi cũng muốn xem cách thực hiện tìm kiếm ** ký tự đại diện ** và cách tìm kiếm thư mục hiện tại ** bao gồm tất cả các thư mục con **. Làm thế nào mà sẽ nhìn với 'recoll/xapian' trong dòng lệnh (non-GUI)? Cảm ơn! –
@ LeszekŻarna Có lẽ bạn có thể đăng ví dụ bạn đã kiểm tra? –
Có một công cụ grep tài nguyên chung nguồn mở crgrep tìm kiếm trong tệp PDF mà còn các tài nguyên khác như nội dung được lồng trong 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à các kết hợp này bao gồm đệ quy Tìm kiếm.
Mô tả đầy đủ trong tab Tệp chứa khá nhiều công cụ hỗ trợ.
Tôi đã phát triển crgrep như một công cụ mã nguồn mở.
Craig - bạn có kết nối với dự án đó không? Nếu vậy, bạn nên nêu rõ trong câu trả lời của bạn. Tôi nói điều này bởi vì bạn vừa đăng một câu trả lời hầu như giống hệt với hai câu hỏi cũ khác ... –
Cập nhật bài đăng để làm rõ rằng tôi là tác giả của crgrep – Craig
phiên bản thực tế của tôi về pdfgrep (1.3.0) cho phép như sau:
pdfgrep -HiR 'pattern' /path
Khi làm pdfgrep --help
:
- H: In tên tập tin cho mỗi trận đấu.
- i: Bỏ qua phân biệt chữ hoa chữ thường.
- R: Tìm kiếm thư mục theo cách đệ quy.
Nó hoạt động tốt trên Ubuntu của tôi.
Tôi thích câu trả lời của @ sjr nhưng tôi thích xargs hơn so với -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 có ý nghĩa.
find . -name '*.pdf' | xargs -P 5 -I % pdftotext % - | grep --with-filename --label="{}" --color "pattern"
điểm thú vị về khả năng xử lý song song 'xargs' '. Lưu ý rằng đối số tùy chọn '--label' của bạn sẽ là _literally_' {} ', bởi vì lệnh' grep' bây giờ không còn được thực hiện trong ngữ cảnh '' của 'tìm'. – mklement0
Đầu chuyển đổi tất cả các file pdf của bạn để tập tin 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.
Điều này, khi được thực hiện kết hợp với 'ag' https://github.com/ggreer/the_silver_searcher. Có khả năng phân tích cú pháp tại psychedeliks Gb tính bằng micro giây. Tệp phẳng cho cuộc sống – Cryptopat
- 1. Tìm ra một cách tập tin bằng cách tìm kiếm nội dung nhị phân của nó. Khả thi?
- 2. Liệt kê nội dung của nhiều tệp jar
- 3. Tìm kiếm nhiều chuỗi trong nhiều tệp
- 4. Chia nội dung php thành nhiều tệp
- 5. Android - Truy cập tệp từ nội dung \ PDF hiển thị
- 6. Trình xử lý PDF: tên tệp nội dung bố trí
- 7. Chuyển đổi PDF có thể tìm kiếm sang PDF không thể tìm kiếm được
- 8. Tìm kiếm thông qua các tệp PDF với PHP
- 9. cách đọc nội dung của tệp bằng Fileupload
- 10. Tôi làm cách nào để tìm kiếm nội dung tệp lịch sử có tính chất siêu việt?
- 11. Làm cách nào để tạo tệp PDF có nội dung văn bản "thực" trên iOS?
- 12. Tìm nội dung của một tệp từ một tệp khác trong UNIX
- 13. Cách tìm Trang trống trong tệp pdf
- 14. Cách tìm kiếm chuỗi trong nhiều tệp và trả về tên tệp trong Powershell?
- 15. cách lưu nội dung đã tạo DOMPDF vào tệp?
- 16. cách lấy ParcelFileDescriptor cho nội dung tệp?
- 17. Tải xuống tất cả các tệp pdf từ kết quả tìm kiếm của Google Scholar bằng cách sử dụng wget
- 18. Cách đặt nội dung tệp .pdf vào cột (cột) tối đa
- 19. Tìm kiếm SharePoint không lập chỉ mục nội dung của thư viện tài liệu
- 20. Tạo PDF từ ASP.NET từ nội dung HTML/CSS thô?
- 21. vim sử dụng nội dung của một biến bên trong tìm kiếm và thay thế biểu
- 22. Cách thêm nội dung vào một tệp PDF bằng iText PdfStamper
- 23. cách đọc nội dung của tệp trong Erlang?
- 24. Cách xóa nội dung của tệp trong python
- 25. Cách xem nội dung của tệp APK Android?
- 26. cách lấy nội dung của tệp ascii nhỏ trong python?
- 27. Tìm kiếm từ cụ thể bằng PDF bằng Itextsharp
- 28. Quản lý nội dung Tridion và PDF (khối lượng lớn)
- 29. SharpZipLib Kiểm tra và chọn nội dung của tệp ZIP
- 30. Tôi có thể lấy nội dung của tệp được tải lên bằng php bằng cách nào?
Grep sẽ không hoạt động dưới dạng PDF là định dạng nhị phân và văn bản thường được nén hoặc được mã hóa theo nhiều cách khác nhau. –
Đây là giải pháp GUI: Adobe Reader, xem https://wikispaces.psu.edu/display/training/Search+for+Text+in+Multiple+PDFs+with+Adobe+Reader –
Related: http: // unix .stackexchange.com/questions/6704/grep-pdf-files – Flow