多くのファイルがあるディレクトリで、特定の正規表現(または形式)がファイルに存在する場合は、ファイル名を取得したいと思います。
例:
ramayanaというファイルに「rama」という単語が見つかった場合は、ファイル名「ramayana」を印刷します。
ファイル名がtableのファイル名に ""などの特定の形式が含まれている場合、シェルは
(TEXT - NUMBERS)
ファイル名テーブルを印刷します。これは非常に簡単です。grep "mytext" * | cut -d':' -f1 | uniq
しかし、Perlでこれを行う方法
有用なCPANモジュールの提案も高く評価されます。
答え1
多分私は少し逃したかもしれませんが、元の要件が基本的に次のような場合:
grep -l "mytext" *
これにより、perl
対応する内容は次のように作成できます。
perl -ne 'if(/mytext/){print"$ARGV\n";close ARGV}' *
ノート読者の注意:次のコードはモデレーターのコメントに基づいて更新され、元の質問と完全に互換性がありません。
#!/usr/bin/perl
@list_code=qw{ over 100 elements here };
@original=@ARGV;
foreach $ele (@list_code) {
@ARGV=@original;
@found=();
while (<>) {
if (/\Q$ele\E/) {
push @found,$ARGV;
close ARGV;
}
}
print "$ele found in ",scalar @found," files : \n",join "\n",@found,'';
}