@ স্ল্যাক আপনার সমাধানটি প্রায় কাজ করে তবে আউটপুটটি সমস্ত ফাইল একসাথে একসাথে প্রদর্শন / STDOUT এর জন্য হয়। আউটপুট হিসাবে আমার স্বতন্ত্র .txt ফাইল দরকার। কারণ হ'ল আমরা আউটপুটে ফাইলের জন্য অ্যাকাউন্টিং করছি না।
কোনও ফোল্ডার হায়ারার্কি অতিক্রম করার আশেপাশে কাজ করার জন্য যদি আমি * .ডোকের জন্য উইন্ডোজ অনুসন্ধান ব্যবহার করি এবং তারপরে ফলাফলগুলি একটি ফোল্ডারে কপি করে সমস্তগুলি একত্রে ফোল্ডারে রেখে দিতে পারি, তবে আমি উবুন্টুতে বুট করতে পারি এবং নিম্নলিখিতটি চালাতে পারি।
(আমার কাছে কোথাও কোথাও একটি ফাইল / ফোল্ডার পুনরাবৃত্তির কোড রয়েছে যা আমি খনন করব এবং সময় হলে পরে যুক্ত করব now) তবে আপাতত কেবল উপরের মতো ফাইল হায়রাচি সমতল করা যথেষ্ট ভাল।
যাইহোক, ক্যাটডোক এন্টিওয়ার্ডের চেয়ে আরও ভাল কাজ করে কারণ এন্টিওয়ার্ড অভিযোগ করে যে কিছু ফাইল ওয়ার্ড ডকস নয়, এটি ডক্টরের মধ্যে ফ্রেম হিসাবে সংগঠিত টেক্সটের ব্লকিং এবং ব্লকযুক্ত .ডোক ফাইল হতে পারে। ক্যাটডোক আমার সমস্ত ডক্সকে রূপান্তরিত করে।
#!/usr/bin/perl -w
use File::Basename;
my $okFiles = "";
my $couldntGet = "";
@files = <*>;
foreach $file (@files)
{
if ( $file =~ m/\.doc/ )
{
my ( $filenameOnly, $dir, $ext ) = fileparse($file, qr/\.[^.]*/);
if ( ( defined $filenameOnly ) && ( defined $ext ) )
{
$okFiles .= "file: ".$file." filename only:".$filenameOnly." extension:".$ext."\n";
system( "catdoc \"".$file."\" > \"".$filenameOnly.".txt\"" );
}
else
{
$couldntGet .= "*file: ".$file." - couldn't get filename only and extension\n";
}
}
print $okFiles;
print $couldntGet;
}