汎用リネーマー(diagnostics)
ラリーおじさんが作ったらしい。怖いからちょっと確認する。
#! /usr/bin/perl use strict; use Fcntl; #evalの対象を読み込み格納 my $oparate = shift or die "引数の一個目をevalします、2つめの引数を@ARGVで読み対象リストにします"; #ログファイルの用意とハンドル my $file = "rename$$.log"; sysopen my $log,$file,O_WRONLY | O_TRUNC | O_CREAT or die "canot open log :$!\n"; #リネームループ for(@ARGV){ my $targ = $_;#変更前の名前を格納 eval $oparate;#$_に対してevalする die $@ if $@;#eval失敗でdie #リネーム確認部分 print $targ," rename ",$oparate," -> ",$_,"\n"; print "rename OK? [y/n]"; my $confirm = substr(<STDIN>,0,1);#冗長ですね #ログ書き込みとリネーム if($confirm eq 'y' || $confirm eq 'Y'){ print $log qq("$targ"\,"$_"\n); rename($targ,$_) unless $targ eq $_;#リネームが同じならやめちゃうよ。 }else{print "cancel\n"} } close $log;
undoないから使うのが怖いな。
リストに変更前と変更後をもてたらよいのかもしれない。csvっぽい形式で書き出しとく