পিডিএফ ফাইলের বৃহত সংখ্যায় বাক্য অনুসন্ধান করার জন্য কমান্ড লাইন সরঞ্জাম


9

আমি Opensuse 10.3 ব্যবহার করছি এবং একটি ডিরেক্টরিতে পিডিএফ ফাইলের বৃহত সংখ্যায় বাক্যাংশ অনুসন্ধান করতে কমান্ড লাইন সরঞ্জামগুলি জানতে চাই। উইন্ডোজ এক্সপিতে এক্সপ্লোরার অনুসন্ধান এটিকে অনুমতি দেয় তবে খুব ধীর। এখানে গ্রেপ টিপস আছে?



আমি প্রথমে কমান্ড লাইন সরঞ্জামগুলি জানতে চাই এবং যদি জিইউআই সরঞ্জামগুলি থাকে, তবে এটি খুব সুন্দর হবে ing উইংআরপ কেবল উইন্ডোজের অধীনে। এবং আমি কেবল পিডিএফ ফাইলগুলি অনুসন্ধান করতে চাই, তাই এর জন্য অনুকূলিত একটি অ্যাপ্লিকেশনটি ভাল লাগবে
আইসম্যান

উত্তর:


6
SEARCH_DIR = "/ কিছু / Dir / যেখানে / আপনি / চান / থেকে / অনুসন্ধান /";
SEARCH_STRING'- এর = "যাই হোক না কেন-আপনি-হয়-অনুসন্ধানের";
# পিডিএফ থেকে পাঠ্য আহরণ করা
pdftotext "file.pdf" "file.txt"

# গ্রেপের সাথে সংযুক্ত হচ্ছে
pdftotext "file.pdf" / dev / stdout | grep -H --label = "file.pdf" - "$ SEARCH_STRING"

# যদি আপনি গ্রেড পিডিএফ ফাইলের সাথে কেবল ফাইলের তালিকা প্রদর্শন করতে চান তবে ম্যাচগুলির সাথে - ফাইলগুলি যুক্ত করুন
pdftotext "file.pdf" / dev / stdout | grep -H --label = "file.pdf" - ফাইলের সাথে ম্যাচ - "$ SEARCH_STRING"

# পিডিএফ থেকে অনুসন্ধানের জন্য সম্ভাব্য তালিকা সন্ধান করুন
"$ SEARCH_DIR" টাইপ এফ-নাম '* .pdf'> পিডিএফ-তালিকা-এর তালিকা
প্রসেসিংয়ের জন্য বাশকে প্রেরণ করা হয়েছে # ড্যাক্ট টেপ হিসাবে বিশ্রীভাবে যোগদান করা সমস্ত কিছুই
# ডাবল উক্তিটি এক্স 22 এর মধ্যে থাকা হিসাবে পালানো হয়েছে।
"$ SEARCH_DIR" -প্রকারের f -name '* .pdf' | awk -v SEARCH_STRING = "$ SEARCH_STRING" 'find সন্ধান করুন {
"pdftotext \ x22" $ 0 "\ x22 / dev / stdout | গ্রেপ-এইচ --label = \ x22" $ 0 "\ x22 - \ x22" সার্চ_স্ট্রিং "\ x22"
} '| বাশ

# আউট ব্যাশ আপনার প্রয়োজন মেলে আরও প্রক্রিয়া
"$ SEARCH_DIR" -প্রকারের f -name '* .pdf' | awk -v SEARCH_STRING = "$ SEARCH_STRING" 'সন্ধান করুন
{
EXEC = "pdftotext \ x22" $ 0 "\ x22 / dev / stdout | গ্রেপ-এইচ --label = \ x22" $ 0 "\ x22 - \ x22" সার্চ_স্ট্রিং "\ x22";
(EXEC | getline ret) while
 "ফাইলের জন্য [" $ 0 "] মুদ্রণ করুন আমাদের [" ret "]" মিলছে;
 # তোমার যা ইচ্ছা করো. 
};
CLOSE (পাগলের সংখ্যা বাড়ছে);
} '

আমি অনুমান করি যে আপনি "উইন্ডোজ এক্সপি" বা উইন্ডোজ-অনুসন্ধান ট্যাগ উল্লেখ করা প্রশ্নের অংশটি লক্ষ্য করেন নি । আমি জানি প্রশ্নটি (বিভ্রান্তিতে) "ওপেনসুএস" দিয়ে শুরু হয়েছিল , তবে লিনাক্সের রেফারেন্সের চেয়ে উইন্ডোজ উল্লেখ বেশি রয়েছে; বিশেষত যখন আপনি তার পরবর্তী মন্তব্যগুলিও গণনা করেন
Synetech

@ সিনিটেক: তিনি "উইংরেপ কেবল উইন্ডোজের অধীনে" এমন একটি উত্তর প্রত্যাখ্যান করেছিলেন, যা পরামর্শ দেয় যে তিনি একটি লিনাক্স সমাধান চান।
যান্ত্রিক শামুক 4

@ মেকানিক্যালসনেল, তিনি এটিকে প্রত্যাখ্যান করেছেন কারণ এটি একটি জিইউআই সরঞ্জাম যেখানে একটি কমান্ড-লাইন সরঞ্জামের জন্য বলেছে।
সিনিটেক

3

লিনাক্স এবং উইন্ডোজ উভয়েরই অধীনে আপনি অ্যাক্রোব্যাট রিডার ব্যবহার করতে পারেন, যার একাধিক ফাইল অনুসন্ধান করার জন্য একটি আদেশ রয়েছে।

লিনাক্সের অধীনে, রিকোল রয়েছে যা প্রথমবার এটি চালানোর সময় আপনার পিডিএফ ফাইলগুলির (এবং আরও) একটি সূচক তৈরি করবে। সূচকটি তৈরি হওয়ার পরে শব্দ অনুসন্ধানগুলি খুব দ্রুত হওয়া উচিত; বাক্যাংশ অনুসন্ধানগুলি যুক্তিসঙ্গত হওয়া উচিত। pdftotextআপনি পুনরায় কল শুরু করার আগে কমান্ডটি ইনস্টল করা আছে তা নিশ্চিত করুন ; ডেবিয়ান এবং উবুন্টু এর অধীনে, এটি poppler-utilsপ্যাকেজে রয়েছে, আমি সুস সম্পর্কে জানি না।

অথবা আপনি সরাসরি ফাইলগুলিকে পাঠ্যে রূপান্তর করতে পারেন এবং নীচের কমান্ডগুলির সাহায্যে পাঠ্য ফাইলগুলিতে গ্রেপ ব্যবহার করতে পারেন।

Find -name '* .pdf' -exec pdftotext {} \;
grep -r - '* .txt' -l -F "অনুসন্ধানের সঠিক বাক্য"
grep -r - '* .txt' -l -E "অনুসন্ধানের জন্য নিয়মিত প্রকাশ"

অ্যাডোব একটি সম্পূর্ণ ডিরেক্টরিতে অনুসন্ধান করার অনুমতি দেয় না, এটি কেবল কোনও ফাইলের মধ্যেই এটি করবে। আমি প্রথমে কমান্ড লাইন সরঞ্জামগুলি জানতে চাই এবং যদি জিইউআই সরঞ্জামগুলি থাকে তবে এটি খুব সুন্দর হবে
আইসম্যান

লিনাক্সের অধীনে অ্যাডোব রিডার 9 এর "সম্পাদনা | অনুসন্ধান" মেনু এন্ট্রি রয়েছে যা আপনাকে ডিরেক্টরিতে সমস্ত পিডিএফ ফাইল অনুসন্ধান করতে দেয়। কমান্ড লাইনে, আমি যে সমস্ত পদ্ধতি সম্পর্কে অবগত আছি pdftotextসেগুলির একটি পদক্ষেপ জড়িত (কোন সরঞ্জাম যেমন রিকোল স্বয়ংক্রিয়ভাবে করবে) involve
গিলস 'এস-অশুভ হওয়া বন্ধ করুন'

1
রিকোলের জন্য +1। আপনার যদি প্রচুর পরিমাণ থাকে এবং আপনি ঘন ঘন ঘন অনুসন্ধান করেন তবে ফাইলগুলি সূচীকরণে সময় সাশ্রয় হবে।
যান্ত্রিক শামুক

1

Adobe Reader- কে এক্স পেশা আছে এবং এটি কাজ করে না শুধুমাত্র একটি ফাইল ভিতরে একটি সম্পূর্ণ ডিরেক্টরি ও সাব অধীনে অনুসন্ধানের অনুমতি, কিন্তু এটা একটা কমান্ড লাইন প্রোগ্রাম নয়।


এটি কি অ্যাক্রোব্যাট এক্স এর সর্বশেষতম সংস্করণে রয়েছে? কোন মুক্তি?
আইসম্যান

আমি অ্যাক্রোব্যাট সূচক সরঞ্জামটি চেষ্টা করেছি এবং এটিকে আদিম বলা একটি প্রশংসা। recollডেবিয়ানে হ্যান্ডলি ইনস্টল করা হয়েছে, এখন এটি আমার উইন্ডোজ-ভিত্তিক কর্মীদের জন্য ব্যবহারযোগ্য করে তোলার চেষ্টা করছে।
ক্রিস কে

0

আপনার বাড়ির ডিরেক্টরিতে পিডিএফ ফাইল এক্সটেনশন রয়েছে এমন সমস্ত ফাইলকে পুনরাবৃত্তভাবে তালিকাভুক্ত করতে [iI]n Haskellএবং উদাহরণস্বরূপ রেজেক্স ' ' এর সাথে মেলে এমন একটি লাইন রয়েছে , আপনি ইস্যু করতে পারেন:

find ~/ -regextype posix-extended -regex '.*\.pdf' -execdir sh -c 'pdftotext "$0" - | grep -El --label="$PWD${0#?}" "$1"' {} '[iI]n Haskell' \;

মন্তব্য:

  • যদিও এটা এই উদাহরণে জন্য বিশেষভাবে প্রয়োজনীয় নয়, আমি এই নির্মাণ থাকেন ব্যবহার এড়ানো -execবা xargsকারণ, নিরাপত্তার কারণে আমি মনে করি এটা ভাল অভ্যাস এমনটি অভ্যাস ঢোকা। পরিবর্তন করা হচ্ছে ' -execdir' থেকে ' -exec' এবং ' $PWD${0#?}' থেকে ' $0' এই দৃষ্টান্ত একই ফলাফল অর্জন করা উচিত নয়।
  • ফাইলের নামগুলির সাথে প্যাটার্ন-মিলের জন্য গ্লোব ব্যবহার করার পরিবর্তে নিয়মিত এক্সপ্রেশনগুলির বৃহত্তর অভিব্যক্তিী শক্তি ব্যবহার এবং পুরো পথ ধরে প্যাটার্ন-মিলের ক্ষেত্রে এটি কার্যকর হতে পারে। এটি কীভাবে করা যায় তা দেখানোর জন্য আমি এখানে অনুশীলনটি অন্তর্ভুক্ত করেছি। নোট করুন যে পথটি প্যাটার্নের সাথে মিলেছে তা হল সেই পথটি যা সাধারণত মুদ্রিত হত। এটি আপেক্ষিক বা নিখুঁত কিনা তা প্রদত্ত পাথ আর্গুমেন্ট (গুলি) এর উপর নির্ভর করে, যা যদি বর্তমান কার্যকারী ডিরেক্টরিতে (' ./') ডিফল্ট নির্গত হয় । এই উদাহরণে, এর সাথে মেলে পাথগুলি সমস্ত পরম (যেমন ' /' দিয়ে শুরু হয় ) কারণ ' ~/' বর্তমান ব্যবহারকারীর হোম ডিরেক্টরিটির পরম পথে প্রসারিত এবং এটিই একমাত্র পথের যুক্তি।
  • ' $0' এবং ' $1' হ'ল স্থিতিগত প্যারামিটারগুলি এমনভাবে ব্যবহৃত হয় যাতে আর্গুমেন্টগুলিকে সঠিকভাবে উদ্ধৃত করা যায়। এটি যদি সঠিকভাবে না করা হয় তবে কমান্ডটি স্বেচ্ছাসেবী ফাইল নামগুলির পক্ষে ঝুঁকিপূর্ণ।
  • ' ${0#?}' এর প্রথম চরিত্রটি $0অর্থাৎ ' ' কে আলাদা করে ফেলে .

ফাইলের নাম অনুসারে প্রতিটি মিলে যাওয়া লাইন মুদ্রণ করতে:

find ~/ -regextype posix-extended -regex '.*\.pdf' -execdir bash -c 'pdftotext "$0" - | grep -EH --label="${0:2}" "$1"' {} '[iI]n Haskell' \;

এই রূপটি ' -H' এর পরিবর্তে ' ' ব্যবহার করে -lএবং ফাইলপথের পরিবর্তে ফাইল নাম সহ লেবেল ব্যবহার করে। ' ${0:2}' এর প্রথম দুটি অক্ষর $0, অর্থাত্ ' ./' এর দুটি পৃথক করে তবে এটি স্পষ্টতই স্বীকৃত নয় sh

অবশ্যই, আপনার প্রয়োজনের জন্য টুইট।

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