#!/usr/bin/perl # ※ローカルのhttpディレクトリ、自己の環境にあわせて修正 $PPSD_DIR = '/other/ppsd/http'; search_file($PPSD_DIR, 0); exit; sub search_file{ my ($path, $level) = @_; return if($level > 1); # 下に降りる階層数のチェック opendir($path, $path) or die "Error opendir $path: $!"; while (my $entry = readdir($path)){ my $fn = "$path/$entry"; if( -d $fn){ # '.'又は'..'でなければ再帰 if($entry eq "." || $entry eq ".."){ ; } else { search_file($fn, $level + 1); } } do_file($path, $entry); } closedir($path); } sub do_file{ my ($path, $entry) = @_; if($entry =~ s/^\%7e/~/i){ print "rename $path/$_[1] -->> $entry\n"; chdir($path); if (rename($_[1], $entry) == 0) { print "NG: $!\n"; } } }