কীভাবে সমস্ত পিডিএফ ফাইলকে একটি কমান্ড দিয়ে পাঠ্যে (ফোল্ডারের মধ্যে) রূপান্তর করতে?


18

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

$ pdftotext filename.pdf

কিন্তু একটি একক কমান্ড রয়েছে যা পৃথক ফাইলের নাম নির্দিষ্ট করে না করে রূপান্তর করতে পারে যাতে সেগুলি সমস্ত রূপান্তর করতে পারে?

আমি এখানে উইকিপিডিয়ায় দেখছি যে "ওয়াইল্ডকার্ডস (*), উদাহরণস্বরূপ $ পিডিফটেক্সট * পিডিএফ, একাধিক ফাইল রূপান্তর করার জন্য, ব্যবহার করা যাবে না কারণ পিডিফোটটেক্সট কেবলমাত্র একটি ফাইলের নাম প্রত্যাশা করে।"

pdf  text  convert  batch 

উত্তর:


23

নিম্নলিখিতটি বর্তমান ডিরেক্টরিতে সমস্ত ফাইলকে রূপান্তর করবে:

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

এটির একটিই কমান্ড, এটি টার্মিনালে একটি লাইনে টাইপ করা যেতে পারে (এটির জন্য একটি লাইন-সিনট্যাক্সে লুপের জন্য পিডফিটটেক্সট, যা অপিপি চেয়েছিল)
স্যাম

খুঁজে বার করো কিভাবে লুপ জন্য কাজ করে আরও তথ্যের জন্য এই লিঙ্ক: cyberciti.biz/faq/bash-for-loop thegeekstuff.com/2011/07/bash-for-loop-examples
স্যাম

এটি কি নন-পিডিএফ ফাইল নিয়ে সমস্যা সৃষ্টি করবে না?
সিপ্রিফিট

এটি কি "filename.pdf.txt" এর মতো ফাইল তৈরি করবে না?
রায়ান সি থম্পসন

হ্যাঁ, যদি সমস্যা হয় তবে আমরা 'সেড' বা 'অ্যাডক' ব্যবহার করে .pdf এক্সটেনশনটি সরিয়ে ফেলতে পারি তবে কমান্ডটিতে জটিলতা যুক্ত হবে
স্যাম

8
ls *.pdf | xargs -n1 pdftotext

xargsপ্রায়শই একবারে একটি ছোট পরিবর্তন করে একই কমান্ডটি একাধিকবার চালানোর জন্য দ্রুত সমাধান। -n1বিকল্প নিশ্চিত করুন যে শুধুমাত্র একটি পিডিএফ ফাইল একটি সময়ে pdftotext প্রেরণ হয়।

সম্পাদনা করুন: আপনি যদি ফাইলের নাম এবং এর মতো জায়গাগুলি সম্পর্কে উদ্বিগ্ন হন তবে আপনি এই বিকল্পটি ব্যবহার করতে পারেন:

find . -name '*.pdf' -print0 | xargs -0 -n1 pdftotext

দয়া করে আমার উত্তরটি দেখুন: সেখানে বর্ণিত সমস্যাটি এড়াতে কি এই আদেশটি মানিয়ে নেওয়া যেতে পারে? এর অর্থ এই নয় যে আপনার সমাধানটি ভাল নয়, বিপরীতে, এটি খুব সুনির্দিষ্ট কিছু করে যা এখানে অন্যান্য বিকল্পগুলি না করে। তবে আমি কেবল কৌতূহলী ছিলাম

2
বিকল্পভাবে:ls *.pdf | xargs -L1 -I% pdftotext % %.txt
ক্যানরব

2

একটি বাশ স্ক্রিপ্ট লিখুন

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

বা এটি একটি লাইন কমান্ড টাইপ করুন:

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

আশা করি এটা কাজে লাগবে. এটি পরীক্ষা করার জন্য আমার কাছে .pdfs এর একটি বড় গ্রুপ নেই, তবে আমি আমার .flac ফাইলগুলিকে .ogg ফাইলগুলিতে রূপান্তর করতে এই কৌশলটি ব্যবহার করি।


folder ফোল্ডারে টার্মিনালটি খোলার মাধ্যমে এবং ম্যানুয়ালি পাথ প্রবেশ করার পরিবর্তে একটি কমান্ড চালিয়ে এটি করা যাবে?

আপনি কি এটি এখানে এখানে আটকান এবং আপনার উত্তরে সন্নিবেশ করতে পারেন? এটি একটি ভাল উত্তর হবে। আপনি পোস্ট করেছেন কেবল তার একটি অংশ মুছে দিয়ে আমি ভাল সূত্রে পৌঁছাতে

আমি প্রাথমিকভাবে প্রস্তাবিত সন্ধান এবং জার্গাগুলি যখন সেগুলি পরীক্ষার সুযোগ পেল তখন তা কার্যকর হয়নি।
cprofitt

1

আমাকে প্রথমে স্যাম এবং রায়ান থম্পসনকে এবং অন্য সমস্ত উত্তরদাতাদের ধন্যবাদ জানাতে হবে - আমার উত্তরটির জন্য এখানে থুনারের কাস্টম ক্রিয়ায় তাদের সমাধান যুক্ত করার সম্ভাবনা সম্পর্কিত একটি প্রকরণ ছাড়া কিছুই নয়:

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

এখানে চিত্র বর্ণনা লিখুন

এখানে চিত্র বর্ণনা লিখুন

এখানে চিত্র বর্ণনা লিখুন

কমান্ডটি হ'ল find . -name '*.pdf' -print0 | xargs -0 -n1 pdftotext, ( রায়ান থম্পসন থেকে আগত ) এটি আমি ব্যবহার করতে পছন্দ করি তবে এটির একটি বাজে পালা রয়েছে ... নীচে দেখুন ...

এখানে চিত্র বর্ণনা লিখুন

এখানে চিত্র বর্ণনা লিখুন

... এটি একটি মজাদার কমান্ড, যত্ন সহ ব্যবহার করা: এটি ফোল্ডার যেখানে ফায়ার করা হয়েছে সেখানে সমস্ত পিডিএফ টেক্সট রূপান্তর করার জন্য তৈরি করা হয়েছে, সুতরাং, যদি হোম ফোল্ডারে ভুল করে এটি চালানো হয় তবে এটি কিছু অযাচিত হবে প্রভাবগুলি: আপনার সমস্ত পিডিএফগুলি পাঠ্যে রূপান্তরিত হবে!

(আমি এটি এটির মতো পরীক্ষা করেছি: ডেস্কটপে "টেস্ট" নামে একটি ফোল্ডার তৈরি করে তাতে পিডিএফ ফাইল এবং ফোল্ডারগুলির মধ্যে ফোল্ডারগুলির একটি সিরিজ ( /Desktop/test/a/b/c/e/f/g/h/i) প্রতিটি একই পিডিএফ সমন্বিত that কমান্ডটি চালনা করে /Desktop/testসমস্ত পিডিএফসকে নীচে রূপান্তরিত করে "আমি" ফোল্ডার।)

(এই ঝুঁকি এড়াতে কীভাবে এই আদেশটি সামঞ্জস্য করা যায় সে সম্পর্কে আমি মন্তব্যগুলিকে স্বাগত জানাব))

স্যামfor file in *.pdf; do pdftotext "$file" "$file.txt"; done থেকে আসা অন্য একটি ( ) এর সাথে এটি প্রতিস্থাপন করলে সমস্যা এড়ানো যায়।

তবে নির্দিষ্ট কিছু ক্ষেত্রে রাইনের সমাধানটি ঠিক কী করতে চায়!


1
আপনি findসাবডিরেক্টরিগুলিতে কমান্ড অনুসন্ধান ব্যবহার করে এড়াতে পারবেন -maxdepth 1। এছাড়াও, যখন এটি Thunar এ কাস্টম কর্ম বৈশিষ্ট্যে নির্বাণ, আপনি সম্ভবত প্রতিস্থাপন করা উচিত find .সঙ্গে find %FThunar এ সঠিকভাবে নির্বাচিত ডিরেক্টরি পাথ পাস অনুমতি দেয়।
রায়ান সি থম্পসন

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

এটি একটি নমুনাPdf.txt ফলাফল

ব্যবহারকারী 2357111317 এর পরামর্শ অনুসারে আমি এটি ব্যবহার করার চেষ্টা করেছি এবং আমি পাঠ্যের বিন্যাসটি সংরক্ষণ করতে -আউটআউটও অন্তর্ভুক্ত করেছি

for file in *.pdf; do pdftotext -layout "$file"; done
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.