একাধিক পিডিএফ ফাইলের সামগ্রী কীভাবে সন্ধান করবেন?


226

আমি কীভাবে একটি ডিরেক্টরি / উপ ডিরেক্টরিতে পিডিএফ ফাইলগুলির বিষয়বস্তু অনুসন্ধান করতে পারি? আমি কিছু কমান্ড লাইন সরঞ্জামের সন্ধান করছি। দেখে মনে হচ্ছে grepপিডিএফ ফাইলগুলি অনুসন্ধান করতে পারে না।


5
পিডিএফ একটি বাইনারি ফর্ম্যাট হিসাবে গ্রেপ কাজ করবে না এবং পাঠ্যটি প্রায়শ বিভিন্নভাবে সংকুচিত বা এনকোড করা হয়।
স্টিফেনস

4
এখানে একটি জিইউআই সমাধান রয়েছে: অ্যাডোব রিডার, উইকিস্পেসেস.পিএসইউ.ইডু
মার্টিন থোমা


3
অ্যাডোব পাঠক সূক্ষ্মভাবে কাজ করে, তবে এটি সূচী করে না; সুতরাং আপনার কাছে যদি প্রচুর ফাইল থাকে তবে এটি ধীর হবে। কোন সূচক সমাধান?
রুবি

উত্তর:


211

আপনার বিতরণে একটি ইউটিলিটি সরবরাহ করা উচিত pdftotext:

find /path -name '*.pdf' -exec sh -c 'pdftotext "{}" - | grep --with-filename --label="{}" --color "your pattern"' \;

"-" পিডিফোটোটেক্সট আউটপুট স্টাডআউটে থাকা দরকার, ফাইলগুলিতে নয়। --with-filenameএবং --label=অপশন, grep আউটপুট ফাইল নাম করবে। ঐচ্ছিক --colorপতাকা সুন্দর এবং টার্মিন্যালে রং ব্যবহার আউটপুট, grep বলে।

(উবুন্টুতে, pdftotextপ্যাকেজ দ্বারা সরবরাহ করা হয় xpdf-utilsবা poppler-utils))

আপনি যদি GNU- র এমন বৈশিষ্ট্যগুলি সমর্থন করেন না যা সমর্থন করে না তবে এই পদ্ধতিটি ব্যবহার করে pdftotextএবং এর grepথেকেও একটি সুবিধা রয়েছে । দ্রষ্টব্য : pdfgrep-1.3.x প্রসঙ্গের মুদ্রণের জন্য বিকল্পটি সমর্থন করে।pdfgrepgreppdfgrep-C


1
@ কুর্ট ফিফেল আপনার দ্বারা সম্পাদিত সম্পাদনা "(-পিপি দ্বারা সম্পাদনা করুন)" grepমুদ্রিত ফাইলের নামগুলি ফিল্টার করায় কোনও কাজ করে না ।
রাফেল আহরেন্স

@ এসজেআর না, যদিও pdfgrepসমাধানটি দ্রুত এবং সহজ অনুসন্ধানের জন্য ভাল, প্রায়শই আমি কিছু প্রসঙ্গ পেতে চাই, কারণ একটি একক লাইন যথেষ্ট সহায়ক হবে না - সুতরাং আমি এই উত্তরে যুক্ত করেছি: উদাহরণস্বরূপ, আপনি যুক্ত করতে পারেন "আপনার প্যাটার্ন" এর আগে -C5 বিকল্পটি আউটপুটে 5 টি লাইনের প্রসঙ্গ অন্তর্ভুক্ত করার জন্য - পিডিএফগ্রিপ এটি সমর্থন করে না
কলিন ডি বেনেট

ওহ, এটি দুর্দান্ত, এটির সুবিধাগুলি রয়েছে তা জানতে পেরে আনন্দিত যদিও এটি বেশিরভাগ লোকের কাছে জানা কম তবে
WTF

2
@ এসজেআর কেবলমাত্র রেকর্ডের জন্য: আমি উবুন্টু ১২.১০ ব্যবহার করছি এবং pdfgrepঅকেজো, এটি হ্যান্ডেল করতে পারে না এমন ফাইলগুলিতে প্রচুর পরিমাণে আবর্জনার প্রতিবেদন করে। অন্যদিকে আপনার সমাধান সাহায্য করেছে। সুতরাং দয়া করে এটি মুছবেন না, 3 বছর পরেও এটি এখনও সহায়ক!
আলী

আমি এটি সাইগউইনেও ব্যবহার করতে সক্ষম হয়েছি, এটি প্যারামিটার দিয়ে একটি ফাংশন তৈরির জন্য আমাকে "আপনার_পথ "টি" $ 1 "হতে হয়েছিল
কোশমার

214

নেই pdfgrep অবলম্বন দিতে ঠিক কি তার নাম প্রস্তাব দেওয়া।

pdfgrep -R 'a pattern to search recursively from path' /some/path

আমি এটি সাধারণ অনুসন্ধানগুলির জন্য ব্যবহার করেছি এবং এটি দুর্দান্ত কাজ করেছে।

(ডেবিয়ান, উবুন্টু এবং ফেডোরায় প্যাকেজ রয়েছে))

সংস্করণ ১.৩.০ পিডিএফগ্রিপ পুনরাবৃত্ত অনুসন্ধানগুলিকে সমর্থন করে। উবুন্টু 12.10 (কোয়ান্টাল) থেকে উবুন্টুতে এই সংস্করণটি উপলব্ধ।


1
Natty (উবুন্টু 11.04) ঊর্ধ্বমুখী (দেখুন থেকে packages.ubuntu.com/... )
মার্টিন Thoma

2
@ পেভনের কাছে pdfgrepএখন সেই পুনরাবৃত্তির বিকল্প রয়েছে, এতে -R
সিমলিংকগুলি

30

রিকোল হল ইউনিক্স / লিনাক্সের জন্য একটি দুর্দান্ত পূর্ণ-পাঠ্য জিইউআই অনুসন্ধান অ্যাপ্লিকেশন যা পিডিএফ সহ কয়েক ডজন বিভিন্ন ফর্ম্যাটকে সমর্থন করে। এমনকি এটি ডকুমেন্ট দর্শকের কাছে কোনও প্রশ্নের সঠিক পৃষ্ঠা নম্বর এবং অনুসন্ধানের শব্দটিও পাস করতে পারে এবং ফলস্বরূপ আপনি তার জিইউআই থেকে ফলাফলটিতে সরাসরি যেতে পারবেন।

রিকোলটি একটি কার্যক্ষম কমান্ড-লাইন ইন্টারফেস এবং একটি ওয়েব-ব্রাউজার ইন্টারফেসের সাথে আসে


1
@ গ্লুটানীমেট এটির সাহায্য করবে (আমি এবং সম্ভবত অন্যরাও) যদি আপনি মূল প্রশ্নের সাথে একাধিক উদাহরণ যোগ করতে পারেন (একাধিক পিডিএফ অনুসন্ধানের জন্য কমান্ড লাইন সরঞ্জাম): আমি কীভাবে একটি ওয়াইল্ডকার্ড অনুসন্ধান করতে হবে এবং কীভাবে অনুসন্ধান করতে হবে তাও দেখতে চাই সমস্ত সাবডাইরেক্টরি সহ বর্তমান ডিরেক্টরীrecoll / xapianকমান্ড লাইনে (নন-জিইউআই) কীভাবে তা দেখতে পাবেন ? ধন্যবাদ!
বাদামি ন্যাটি

@ লেজেকজার্না সম্ভবত আপনি পরীক্ষিত উদাহরণটি পোস্ট করতে পারেন?
বাদামি ন্যাটি

recoll ব্যবহারকারী ম্যানুয়াল কিছু পয়েন্টার থাকতে পারে, কিন্তু অফার বরং একটি প্রযুক্তিগত এবং "প্রসঙ্গ-বহির্ভূত" পড়ার ...
ছিমছাম সম্পর্কে বাদামে পূর্ণ

1
@ নান্টি: রিকোল-ট-কিউ ডির: pwdএক্সট্রা: পিডিএফ 'নিউরো *' - স্ট্যাকওভারফ্লো পিডাব্লুডির চারপাশে ব্যাকটিক্স খেয়েছে।
মেডোক

13

আমার পিডিএফগ্রিপের আসল সংস্করণ (১.৩.০) নীচে অনুমতি দেয়:

pdfgrep -HiR 'pattern' /path

যখন করছেন pdfgrep --help:

  • এইচ: প্রতিটি ম্যাচের জন্য ফাইলের নাম মুদ্রণ করুন।
  • i: কেস পার্থক্য উপেক্ষা করুন।
  • আর: ডিরেক্টরিগুলি পুনরাবৃত্তভাবে অনুসন্ধান করুন।

এটি আমার উবুন্টুতে ভাল কাজ করে।


7

আমি এই ধ্বংসাত্মক ছোট স্ক্রিপ্ট তৈরি করেছি । এটি দিয়ে মজা করুন।

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
}

2
+1 টি। তবে পরিবর্তে $filename.আপনার এটিতে পাইপ করা উচিত grep
রাফেল আহরেন্স

3

আমি @ sjr এর উত্তর পছন্দ করি তবে আমি xargs বনাম-এক্সেক পছন্দ করি। আমি xargs আরও বহুমুখী খুঁজে। উদাহরণস্বরূপ -P এর সাহায্যে আমরা একাধিক সিপিইউগুলির সুবিধা নিতে পারি যখন এটি করার বোধ হয়।

find . -name '*.pdf' | xargs -P 5 -I % pdftotext % - | grep --with-filename --label="{}" --color "pattern"

xargs'সমান্তরাল-প্রক্রিয়াজাতকরণ ক্ষমতা সম্পর্কে আকর্ষণীয় পয়েন্ট । মনে রাখবেন যে আপনার --labelবিকল্প-যুক্তি হতে হবে আক্ষরিক {} , কারণ grepকমান্ড এখন কি আর প্রেক্ষাপটে কার্যকর find'র exec
mklement0

2

আমার একই সমস্যা ছিল এবং এইভাবে আমি একটি স্ক্রিপ্ট লিখেছিলাম যা একটি স্ট্রিংয়ের জন্য নির্দিষ্ট ফোল্ডারে সমস্ত পিডিএফ ফাইলগুলি অনুসন্ধান করে এবং পিডিএফ ফাইলগুলি মুদ্রণ করে যা কোয়েরির স্ট্রিংয়ের সাথে মিলে যায়।

সম্ভবত এটি আপনার পক্ষে সহায়ক হবে।

আপনি এটি এখানে ডাউনলোড করতে পারেন


স্ক্রিপ্ট মন্তব্য করতে দরকারী হতে পারে?
বাক্সেক্স

আমি আপনার স্ক্রিপ্টটি চেষ্টা করেছি এবং এটি pdfgrepসমাধান বা এসজিআরের ওয়ান-লাইনারের চেয়ে অনেক ধীর গতিতে পরিণত হয়েছে এবং এটি সিআরটিএল-সি বন্ধ করার পরেও 100% সিপিইউ থ্রেড ব্যবহার করে চলমান প্রক্রিয়াটি আমাকে ছেড়ে দিয়েছে।
জেসন

2

আপনি যদি পিডিফোটটেক্সট দিয়ে ফাইলের নাম দেখতে চান তবে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

find . -name '*.pdf' -exec echo {} \; -exec pdftotext {} - \; | grep "pattern\|pdf" 

2

রিপগ্রিপ-অল নামে আরও একটি ইউটিলিটি রয়েছে , যা রিপগ্রাইপের উপর ভিত্তি করে ।

এটি অফিস ডকুমেন্টস এবং চলচ্চিত্রের মতো কেবল পিডিএফ ডকুমেন্টের চেয়ে বেশি হ্যান্ডেল করতে পারে এবং লেখক দাবি করেছেন যে এটি এর চেয়ে দ্রুত pdfgrep

পুনরুক্তিভাবে বর্তমান ডিরেক্টরি অনুসন্ধান করার জন্য কমান্ড সিনট্যাক্স এবং দ্বিতীয়টি কেবল পিডিএফ ফাইলের মধ্যে সীমাবদ্ধ করে:

rga 'pattern' .
rga --type pdf 'pattern' .

1

একটি ওপেন সোর্স সাধারণ রিসোর্স গ্রেপ টুল ক্রাগ্রেপ রয়েছে যা পিডিএফ ফাইলগুলির মধ্যে অনুসন্ধান করে তবে অন্যান্য সংস্থান যেমন আর্কাইভ, ডাটাবেস টেবিল, চিত্র মেটা-ডেটা, পিওএম ফাইল নির্ভরতা এবং ওয়েব সংস্থানগুলিতে নেস্টেড থাকে - এবং পুনরাবৃত্ত অনুসন্ধান সহ এইগুলির সংমিশ্রণগুলি।

ফাইল ট্যাবের অধীনে সম্পূর্ণ বিবরণটি সরঞ্জামটি কী সমর্থন করে তা প্রায় কভার করে।

আমি ওপেনসোর্স সরঞ্জাম হিসাবে crgrep বিকাশ করেছি।


ক্রেগ - আপনার কি এই প্রকল্পের সাথে সংযোগ আছে? যদি তা হয় তবে আপনার উত্তরে এটি বিবরণ দেওয়া উচিত। আমি এটি বলছি কারণ আপনি কেবল দুটি অন্যান্য পুরানো প্রশ্নের কার্যত অভিন্ন উত্তর পোস্ট করেছেন ...
স্টিফেন সি

আমি ক্রগ্রিপ এর লেখক
ক্রেগ

1

প্রথমে আপনার সমস্ত পিডিএফ ফাইলগুলি পাঠ্য ফাইলগুলিতে রূপান্তর করুন:

for file in *.pdf;do pdftotext "$file"; done

তারপরে grepস্বাভাবিক হিসাবে ব্যবহার করুন । এটি বিশেষত ভাল কারণ যখন আপনার একাধিক প্রশ্ন এবং প্রচুর পিডিএফ ফাইল থাকে তখন দ্রুত হয়।


এটি, যখন ag github.com/ggreer/the_silver_searcher এর সাথে একত্রে করা হয় । মাইক্রোসেকেন্ডস দ্বারা সাইকোডেলিক্স জিবিতে পার্স করতে সক্ষম। জীবনের জন্য ফ্ল্যাট ফাইলগুলি
এনভিআরএম 10'18

0

প্রথমে আপনার পিডিএফকে একটি পাঠ্য ফাইলে রূপান্তর করতে এবং তারপরে পাঠ্যের অভ্যন্তরে অনুসন্ধান করতে আপনার কিছু সরঞ্জামের দরকার হয় পিডিএফ 2 টেক্সট need (আপনি সম্ভবত কিছু তথ্য বা চিহ্নগুলি মিস করবেন)।

আপনি যদি কোনও প্রোগ্রামিং ভাষা ব্যবহার করে থাকেন তবে সম্ভবত এই উদ্দেশ্যে পিডিএফ লাইব্রেরি লেখা রয়েছে। যেমন পার্লের জন্য http://search.cpan.org/dist/CAM-PDF/


0

উপরের মতো একটি সাধারণ স্ক্রিপ্টে 'অ্যাকোরিয়াড' ব্যবহার করে দেখুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.