私は 2 つの問題に直面しています。
1) 特定のキーワードでディレクトリを検索していますが、ディレクトリには .java .sql .ksh .pl .jar などの多くの拡張子を持つファイルが含まれています。今私の問題は、 .jar または .doc または .docx を持つファイルを検索したくないことです。現在、私のコードは以下のようになっています
use strict;
use warnings;
use File::find;
my $dir = "C:\DURAB\";
my $out = "output.txt";
open my $out, ">", "output.txt";
find(\&printFile,$dir);
sub printFile {
my $element = $_;
if(-f $element && $element =~ /\.*$/){
open my $in, "<", $element or die $!;
while(<$in>) {
if (/\Q$searchString\E/) {
my $last_update_time = (stat($element))[9];
my $timestamp = localtime($last_update_time);
print $out "$File::Find::name". " $timestamp". " $searchString\n";
last;
}
}
}
}
これで、すべてのファイルを検索しています。.jar、.exe、.doc のような拡張子を検索する必要がないように、検索を制限したいと考えています。
2)ディレクトリを検索しているときに、多くのサブディレクトリがあります。古い名前または廃止された名前のディレクトリを検索したくありません (たとえば、 obsolete_dr 、retiret_as ) file::find を使用してこれを達成するにはどうすればよいですか
私は少し混乱していると思いますが、実際には以下が必要な出力です
上記のコードから、 $file::find::name はファイル パスを表示します。このファイル パスに廃止または廃止が含まれている場合、その出力は表示されません。
たとえば、次のようなパスを取得しました
c:\DURAB\ASD\OBSOLETE_EC23\sirgu.sql and c:\DURAB\AS\drive.ksh
上記の最初のパスからは、obsolete という単語が含まれているため表示されません。
私は今、私ははっきりしていると思います。前もって感謝します