以下のような3レベルのディレクトリがあるスクリプトを書いています:
LOG
├── a.txt
├── b.txt
└── sdlog
├── 1log
│ ├── a.txt
│ └── b.txt
└── 2log
├── a.txt
└── b.txt
ファイルの名前は同じですが、サイズは常に異なります。これらのファイルのサイズに基づいて、LOG
ディレクトリとディレクトリにあるものを比較する必要があります。1log
にあるファイルは、2log
何もするつもりはありません。
ファイル名を出力するスクリプトを作成しましたが、上記のタスクは実行できません。
#!/usr/bin/perl
use strict;
use warnings;
use File::Find;
use File::Basename;
my $new_file_name;
my $start_directory = "C:\\logs";
find({ wanted => \&renamefile }, $start_directory);
sub renamefile
{
if ( -f and /\.txt$/ )
{
my $file = $_;
open (my $rd_fh, "<", $file);
LINE: while (<$rd_fh>)
{
if (/<(\d)>/i)
{
close $rd_fh;
print"$file\n";
#print" Kernal-> $file\n";
last LINE;
}
if (/I\/am_create_activity/i)
{
close $rd_fh;
print"$file\n";
#print" EVENT-> $file\n";
last LINE;
}
}
}
}