ファイルの作成日を取得、1週間前に作成したファイルを見つける
use strict;
use utf8;
# フォルダ内のファイル一覧を取得
my $dir = "."; # current directory
my $file;
my @fileList;
opendir(DH, $dir) or die "$dir:$!";
while ($file = readdir DH) {
next if ($file =~ /^\.+$/);
print "$file\n";
push(@fileList, $file);
}
closedir(DH);
print "\@fileList = @fileList\n";
print "====================\n\n";
# ファイルのアクセス日時, 更新日時, 作成日時を取得する
foreach $file (@fileList) {
my $accessTime = (stat($file))[8];
my $modifyTime = (stat($file))[9];
my $createTime = (stat($file))[10];
print "$file\n";
print " access time: " . localtime($accessTime) . "\n";
print " modify time: " . localtime($modifyTime) . "\n";
print " create time: " . localtime($createTime) . "\n";
}
print "====================\n\n";
# 1 週間以前に作成されたファイルを見つける
my $oneWeekAgo = time() - (7 * 24 * 60 * 60);
foreach $file (@fileList) {
my $createTime = (stat($file))[10];
print "$file\n";
print " create time: " . localtime($createTime) . "\n";
if ($oneWeekAgo >= $createTime) {
print " -----> old\n";
}
}
実行結果
> perl test00.pl
sample.txt
sample2.txt
test00.pl
@fileList = sample.txt sample2.txt test00.pl
====================
sample.txt
access time: Fri Aug 24 08:43:53 2012
modify time: Wed Aug 22 20:32:00 2012
create time: Mon Aug 20 14:03:49 2012
sample2.txt
access time: Fri Aug 24 08:51:05 2012
modify time: Wed Aug 22 20:32:00 2012
create time: Tue Aug 7 08:51:05 2012
test00.pl
access time: Fri Aug 24 08:41:40 2012
modify time: Fri Aug 24 08:54:43 2012
create time: Fri Aug 24 08:41:40 2012
====================
sample.txt
create time: Mon Aug 20 14:03:49 2012
sample2.txt
create time: Tue Aug 7 08:51:05 2012
-----> old
test00.pl
create time: Fri Aug 24 08:41:40 2012
今日の日付を付加してバックアップファイルを作成する
use strict;
use utf8;
use File::Copy;
# フォルダ内のファイル一覧を取得
my $dir = "."; # current directory
my $file;
my @fileList;
opendir(DH, $dir) or die "$dir:$!";
while ($file = readdir DH) {
next if ($file =~ /^\.+$/);
print "$file\n";
push(@fileList, $file);
}
closedir(DH);
print "\@fileList = @fileList\n";
print "====================\n\n";
# 今日の日付を付加してバックアップファイルを作成
# 今日の日付を取得
my ($day, $month, $year);
($day, $month, $year) = (localtime(time))[3..5];
$year += 1900;
$month += 1;
my $todayStr = sprintf("%04d%02d%02d", $year, $month, $day);
print "\$todayStr: " . $todayStr . "\n";
print "====================\n\n";
# 対象ファイルをコピー
foreach $file (@fileList) {
print "$file\n";
# "数値付き = backup ファイル" は除く
next if ($file =~ /\_\d+\.txt$/);
# txt ファイルが対象
if ($file =~ /txt$/) {
# . を探す
my $idx = index($file, ".");
print " \$idx = " . $idx . "\n";
my $name = substr($file, 0, $idx);
$name = $name . "_" . $todayStr . ".txt";
print " " . $name . "\n";
# ファイルをコピー
File::Copy::copy($file, $name);
}
}
実行結果
> perl test01.pl
sample.txt
sample2.txt
test01.pl
@fileList = sample.txt sample2.txt test01.pl
====================
$todayStr: 20120824
====================
sample.txt
$idx = 6
sample_20120824.txt
sample2.txt
$idx = 7
sample2_20120824.txt
test01.pl
0 件のコメント:
コメントを投稿