@slhck ваше рішення майже працює, але вихід - на дисплей / STDOUT з усіма файлами, об'єднаними разом. Мені потрібні окремі .txt файли як вихід. Причина в тому, що ми не враховуємо ім'я файлу у висновку.
Щоб подолати необхідність переходу ієрархії папок. Якщо я використовую пошук Windows для * .doc, а потім скопіюю результати в папку, щоб розмістити їх в одній папці, розрівняти, я можу завантажитися в Ubuntu і виконати наступне.
(У мене є десь фрагмент коду з файлом / папками, який я викопаю і додаю пізніше, якщо час.) Але поки досить просто вирівнювання ієрахії файлів, як зазначено вище, досить добре.
До речі, catdoc працює краще, ніж антиворд, тому що antiword скаржиться, що деякі файли не є текстовими документами, це, як правило, файли .doc з форматуванням та блоками тексту, організованими як кадри в документі. catdoc, здається, перетворює всі мої документи.
#!/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;
}