Bagaimana saya bisa mencari konten file PDF dalam direktori / subdirektori? Saya mencari beberapa alat baris perintah. Tampaknya greptidak dapat mencari file PDF.
"-" diperlukan untuk memiliki keluaran pdftotext ke stdout, bukan ke file. The --with-filenamedan --label=pilihan akan menempatkan nama file dalam output dari grep. --colorBendera opsional bagus dan memberi tahu grep untuk keluaran menggunakan warna pada terminal.
(Di Ubuntu, pdftotextdisediakan oleh paket xpdf-utilsatau poppler-utils.)
Metode ini, menggunakan pdftotextdan grep, memiliki keunggulan dibandingkan pdfgrepjika Anda ingin menggunakan fitur-fitur GNU grepyang pdfgreptidak mendukung. Catatan : pdfgrep-1.3.x mendukung -Copsi untuk mencetak garis konteks.
@Kurt Pfeifle Hasil edit "(Edit by -kp-)" yang Anda buat tidak berfungsi karena grepmemfilter nama file yang dicetak.
Raphael Ahrens
@sjr tidak ada, sedangkan pdfgrepsolusi yang baik untuk benar-benar cepat dan pencarian sederhana, sering saya ingin mendapatkan beberapa konteks, sebagai satu baris tidak akan cukup membantu - sehingga saya ditambahkan ke jawaban ini: Misalnya, Anda dapat menambahkan opsi -C5 sebelum "pola Anda" untuk memasukkan 5 baris konteks ke output - pdfgrep tidak mendukung ini
Colin D Bennett
oh itu keren, senang mengetahui ada keuntungan untuk ini meskipun itu jauh lebih jelas bagi kebanyakan orang jika melakukan
sjr
2
@ sjr Sekadar catatan: Saya menggunakan Ubuntu 12.10 dan pdfgreptidak berguna, ia melaporkan sejumlah besar sampah pada file yang tidak dapat ditangani. Solusi Anda di sisi lain membantu. Jadi tolong jangan menghapusnya, bahkan setelah 3 tahun masih membantu!
Ali
Saya dapat menggunakannya juga di cygwin, meskipun untuk membuatnya berfungsi dengan parameter saya harus membuat "your_pattern" menjadi '$ 1'
Koshmaar
215
Ada pdfgrep , yang melakukan persis seperti namanya.
pdfgrep -R 'a pattern to search recursively from path' /some/path
Saya telah menggunakannya untuk pencarian sederhana dan bekerja dengan baik.
(Ada paket di Debian, Ubuntu dan Fedora.)
Karena versi 1.3.0 pdfgrep mendukung pencarian rekursif. Versi ini tersedia di Ubuntu sejak Ubuntu 12.10 (Quantal).
@pavon pdfgrepsekarang memiliki opsi rekursi, termasuk -Rjuga mengikuti symlink
Tobias Kienzler
30
Recoll adalah aplikasi pencarian GUI teks lengkap yang fantastis untuk Unix / Linux yang mendukung puluhan format berbeda, termasuk PDF. Ia bahkan dapat mengirimkan nomor halaman dan istilah pencarian yang tepat dari query ke penampil dokumen dan dengan demikian memungkinkan Anda untuk melompat ke hasil langsung dari GUI-nya.
Recoll juga dilengkapi dengan antarmuka baris perintah yang layak dan antarmuka browser web .
@Glutanimate Akan sangat membantu (saya dan mungkin orang lain juga) jika Anda dapat menambahkan contoh yang berkaitan dengan pertanyaan asli (alat baris perintah untuk mencari beberapa pdf): Saya juga ingin melihat cara melakukan pencarian wildcard dan cara mencari yang direktori saat ini termasuk semua subdirektori . Bagaimana itu terlihat dengan recoll / xapiandi baris perintah (non-GUI)? Terima kasih!
gila tentang rapi
@ LeszekŻarna Mungkin Anda dapat memposting contoh yang Anda uji?
gila tentang rapi
The recollmanual user mungkin berisi beberapa petunjuk, tapi menawarkan agak teknis dan "off-topik" membaca ...
gila tentang rapi
1
@ nutty: recoll -t -q dir: pwdext: pdf 'neuro *' - stackoverflow memakan backticks di sekitar pwd.
medoc
13
Versi pdfgrep (1.3.0) saya yang sebenarnya memungkinkan hal-hal berikut:
+1. Tapi bukannya $filename.Anda harus menyalurkannya ke grep.
Raphael Ahrens
3
Saya suka jawaban @ sjr namun saya lebih suka xargs vs -exec. Saya menemukan xargs lebih fleksibel. Sebagai contoh dengan -P kita dapat memanfaatkan banyak CPU ketika masuk akal untuk melakukannya.
poin menarik tentang xargskemampuan pemrosesan paralel. Perhatikan bahwa --labelargumen-opsi Anda akan secara harfiah{} , karena grepperintah sekarang tidak lagi dieksekusi dalam konteks find's exec.
mklement0
2
Saya memiliki masalah yang sama dan karenanya saya menulis sebuah skrip yang mencari semua file pdf dalam folder yang ditentukan untuk sebuah string dan mencetak file PDF yang cocok dengan string kueri.
mungkin bermanfaat untuk menempatkan skrip di komentar?
baxx
saya mencoba skrip Anda dan ternyata jauh lebih lambat daripada pdfgrepsolusi atau sjr's one-liner, dan itu meninggalkan saya dengan proses yang sedang berlangsung menggunakan 100% dari thread CPU bahkan setelah saya Ctrl-C untuk menghentikannya.
Jason
2
Jika Anda ingin melihat nama file dengan pdftotext, gunakan perintah berikut:
Ada sumber terbuka grep alat sumber daya umum grgrep yang mencari dalam file PDF tetapi juga sumber daya lain seperti konten yang bersarang di arsip, tabel database, meta-data gambar, dependensi file POM dan sumber daya web - dan kombinasi dari ini termasuk pencarian rekursif.
Deskripsi lengkap di bawah tab File cukup banyak mencakup apa yang didukung alat ini.
Saya mengembangkan crgrep sebagai alat opensource.
Craig - apakah Anda memiliki koneksi ke proyek itu? Jika demikian, Anda harus menyatakannya dalam jawaban Anda. Saya mengatakan ini karena Anda baru saja memposting jawaban yang hampir identik untuk dua pertanyaan lama lainnya ...
Stephen C
Posting terbaru untuk memperjelas bahwa saya penulis crgrep
Craig
1
Konversi dulu semua file pdf Anda ke file teks:
for file in *.pdf;do pdftotext "$file"; done
Kemudian gunakan grepseperti biasa. Ini sangat baik karena cepat ketika Anda memiliki banyak pertanyaan dan banyak file PDF.
Ini, ketika dilakukan dalam kombinasi dengan aggithub.com/ggreer/the_silver_searcher . Mampu mengurai di psychedeliks Gb dengan mikrodetik. File flat seumur hidup
NVRM
0
Anda memerlukan beberapa alat seperti pdf2text untuk mengkonversi pdf Anda menjadi file teks dan kemudian mencari di dalam teks. (Anda mungkin akan kehilangan beberapa informasi atau simbol).
Jika Anda menggunakan bahasa pemrograman, mungkin ada perpustakaan pdf yang ditulis untuk tujuan ini. misalnya http://search.cpan.org/dist/CAM-PDF/ untuk Perl
Jawaban:
Distribusi Anda harus menyediakan utilitas yang disebut
pdftotext
:"-" diperlukan untuk memiliki keluaran pdftotext ke stdout, bukan ke file. The
--with-filename
dan--label=
pilihan akan menempatkan nama file dalam output dari grep.--color
Bendera opsional bagus dan memberi tahu grep untuk keluaran menggunakan warna pada terminal.(Di Ubuntu,
pdftotext
disediakan oleh paketxpdf-utils
ataupoppler-utils
.)Metode ini, menggunakan
pdftotext
dangrep
, memiliki keunggulan dibandingkanpdfgrep
jika Anda ingin menggunakan fitur-fitur GNUgrep
yangpdfgrep
tidak mendukung. Catatan : pdfgrep-1.3.x mendukung-C
opsi untuk mencetak garis konteks.sumber
grep
memfilter nama file yang dicetak.pdfgrep
solusi yang baik untuk benar-benar cepat dan pencarian sederhana, sering saya ingin mendapatkan beberapa konteks, sebagai satu baris tidak akan cukup membantu - sehingga saya ditambahkan ke jawaban ini: Misalnya, Anda dapat menambahkan opsi -C5 sebelum "pola Anda" untuk memasukkan 5 baris konteks ke output - pdfgrep tidak mendukung inipdfgrep
tidak berguna, ia melaporkan sejumlah besar sampah pada file yang tidak dapat ditangani. Solusi Anda di sisi lain membantu. Jadi tolong jangan menghapusnya, bahkan setelah 3 tahun masih membantu!Ada pdfgrep , yang melakukan persis seperti namanya.
Saya telah menggunakannya untuk pencarian sederhana dan bekerja dengan baik.
(Ada paket di Debian, Ubuntu dan Fedora.)
Karena versi 1.3.0 pdfgrep mendukung pencarian rekursif. Versi ini tersedia di Ubuntu sejak Ubuntu 12.10 (Quantal).
sumber
pdfgrep
sekarang memiliki opsi rekursi, termasuk-R
juga mengikuti symlinkRecoll adalah aplikasi pencarian GUI teks lengkap yang fantastis untuk Unix / Linux yang mendukung puluhan format berbeda, termasuk PDF. Ia bahkan dapat mengirimkan nomor halaman dan istilah pencarian yang tepat dari query ke penampil dokumen dan dengan demikian memungkinkan Anda untuk melompat ke hasil langsung dari GUI-nya.
Recoll juga dilengkapi dengan antarmuka baris perintah yang layak dan antarmuka browser web .
sumber
recoll / xapian
di baris perintah (non-GUI)? Terima kasih!recoll
manual user mungkin berisi beberapa petunjuk, tapi menawarkan agak teknis dan "off-topik" membaca ...pwd
ext: pdf 'neuro *' - stackoverflow memakan backticks di sekitar pwd.Versi pdfgrep (1.3.0) saya yang sebenarnya memungkinkan hal-hal berikut:
Ketika melakukan
pdfgrep --help
:Ini bekerja dengan baik di Ubuntu saya.
sumber
Saya membuat skrip kecil yang merusak ini . Bersenang-senanglah dengan itu.
sumber
$filename.
Anda harus menyalurkannya kegrep
.Saya suka jawaban @ sjr namun saya lebih suka xargs vs -exec. Saya menemukan xargs lebih fleksibel. Sebagai contoh dengan -P kita dapat memanfaatkan banyak CPU ketika masuk akal untuk melakukannya.
sumber
xargs
kemampuan pemrosesan paralel. Perhatikan bahwa--label
argumen-opsi Anda akan secara harfiah{}
, karenagrep
perintah sekarang tidak lagi dieksekusi dalam konteksfind
'sexec
.Saya memiliki masalah yang sama dan karenanya saya menulis sebuah skrip yang mencari semua file pdf dalam folder yang ditentukan untuk sebuah string dan mencetak file PDF yang cocok dengan string kueri.
Mungkin ini akan membantu Anda.
Anda dapat mengunduhnya di sini
sumber
pdfgrep
solusi atau sjr's one-liner, dan itu meninggalkan saya dengan proses yang sedang berlangsung menggunakan 100% dari thread CPU bahkan setelah saya Ctrl-C untuk menghentikannya.Jika Anda ingin melihat nama file dengan pdftotext, gunakan perintah berikut:
sumber
Ada utilitas lain yang disebut ripgrep-all , yang didasarkan pada ripgrep .
Ia dapat menangani lebih dari sekadar dokumen PDF, seperti dokumen dan film Office, dan penulis mengklaim lebih cepat dari itu
pdfgrep
.Perintah sintaks untuk mencari direktori saat ini secara rekursif, dan yang kedua hanya terbatas pada file PDF:
sumber
Ada sumber terbuka grep alat sumber daya umum grgrep yang mencari dalam file PDF tetapi juga sumber daya lain seperti konten yang bersarang di arsip, tabel database, meta-data gambar, dependensi file POM dan sumber daya web - dan kombinasi dari ini termasuk pencarian rekursif.
Deskripsi lengkap di bawah tab File cukup banyak mencakup apa yang didukung alat ini.
Saya mengembangkan crgrep sebagai alat opensource.
sumber
Konversi dulu semua file pdf Anda ke file teks:
Kemudian gunakan
grep
seperti biasa. Ini sangat baik karena cepat ketika Anda memiliki banyak pertanyaan dan banyak file PDF.sumber
ag
github.com/ggreer/the_silver_searcher . Mampu mengurai di psychedeliks Gb dengan mikrodetik. File flat seumur hidupAnda memerlukan beberapa alat seperti pdf2text untuk mengkonversi pdf Anda menjadi file teks dan kemudian mencari di dalam teks. (Anda mungkin akan kehilangan beberapa informasi atau simbol).
Jika Anda menggunakan bahasa pemrograman, mungkin ada perpustakaan pdf yang ditulis untuk tujuan ini. misalnya http://search.cpan.org/dist/CAM-PDF/ untuk Perl
sumber
coba gunakan 'acroread' dalam skrip sederhana seperti di atas
sumber