아래 코드는 Linux에서 테스트되었습니다. 귀하의 환경에서 작동하도록 수정해야 할 것이 무엇인지 모르겠습니다. 또한 .jpg 파일에 대한 하위 디렉토리 검색은 포함하지 않았습니다. 이런 방식으로 코드를 수정하고 싶다면 알려 주시기 바랍니다.
(편집 : 하위 디렉토리 전체 검색, 더 아래 프로그램의 버전을 확인하시기 바랍니다) :
file(1).jpg --> file(001).jpg
file(2).jpg --> file(002).jpg
file(20).jpg --> file(020).jpg
file(200).jpg --> file(200).jpg
다음
use strict;
use warnings;
sub pad_left {
my $num = shift;
if ($num < 10) {
$num = "00$num";
}
elsif ($num < 100) {
$num = "0$num";
}
return $num;
}
my @files = glob "*.jpg";
my @padded_names = map {
my $name = $_;
$name =~ s/^([\w ]+\()(\d+)\)/$1 . &pad_left($2) .')'/e;
$name;
} @files;
foreach (0..$#files) {
rename($files[$_], $padded_names[$_]);
print "$files[$_] --> $padded_names[$_]\n";
}
위의 프로그램은 파일의 이름을 변경하고 인쇄를
HTH
편집 : 개선 된 버전의 abov e 프로그램 - 이제는 .jpg 파일에 대한 하위 디렉토리 검색도 통합됩니다. 나는 :)이
use strict;
use warnings;
use File::Find;
sub pad_left {
my $num = shift;
if ($num < 10) {
$num = "00$num";
}
elsif ($num < 100) {
$num = "0$num";
}
return $num;
}
sub new_name {
if (/\.jpg$/) {
my $name = $File::Find::name;
my $new_name;
($new_name = $name) =~ s/^(.+\/[\w ]+\()(\d+)\)/$1 . &pad_left($2) .')'/e;
rename($name, $new_name);
print "$name --> $new_name\n";
}
}
chomp(my $localdir = `pwd`);# invoke the script in the parent-directory of the
# image-containing sub-directories
find(\&new_name, $localdir);
와우! 고마워요. 그것이 당신을 귀찮게하지 않는다면, 예, 부탁을 들어 도와주세요. –
@ Eric Fortis 알았어. 갈거야 :) 잠깐만 기다려. – canavanin
@Eric Fortis 조금 놀아 보니 기대했던 것보다 오래 걸렸습니다> _
canavanin