ファイル名の番号を変更する

ファイル名に付いている番号を付け替える。
all18000.bmp, all18020.bmp, all18040.bmp, ..., all18980.bmp, all19000.bmp
という51個のファイルがあるのだが、番号を変える必要が生じた。
all50.bmp, all49.bmp, all48.bmp, ..., all01.bmp, all00.bmp
というように変える。

以下のPerlスクリプトで実行できる。

use strict;
use warnings;

my $dirname = '.';
opendir(DIR, $dirname) or die "$dirname: $!";

while (my $dir = readdir(DIR)) {
	if ($dir =~ /\d+/) {
		my $old = $dir;
		my $num = 50-($&-18000)/20;
		if (length($num) == 2) {
			$dir =~ s/\d+/$num/g;
		} elsif (length($num) == 1) {
			$dir =~ s/\d+/0$num/g;
		}
		rename($old, $dir);
	}
}
closedir(DIR);


もう一つは、ログファイルから適当な数値を二つ抜き出す下のスクリプトを作成した。
一応ちゃんと動いた。

use strict;
use warnings;

my $dirname = '.';
my $prss = 0.0;
my $tim = 0.0;

opendir(DIR, $dirname) or die "$dirname: $!";

while (my $dir = readdir(DIR)) {
	if ($dir =~ /^log/) {
		open(FILE, $dir) or die "$!";
		while (my $line = <FILE>) {
			if ($line =~ /TIME STEP/) {
				my @time = split(/  /, $line);
				$tim = $time[6];
			}
			if ($line =~ /MAX  :/) {
				my @press = split(/  /, $line);
				$prss = $press[7];
				print $tim,' ', $prss, "\n";
			}
		}
		close(FILE);
	}
}
closedir(DIR);