Gostaria de renomear um grande número de arquivos com nomes in1.jpg, in2.jpg, in3.jpg, etc. para out0001.jpg, out0002.jpg, out0003.jpg, etc. Agradeço se alguém sugerir uma solução usando o script perl rename
(ou prename
) que vem com a distribuição perl.
Responder1
Só por diversão e de graça...
Eu usaria links para manter os nomes originais, mas você pode alterar o comando link ( ln
) para um comando mover ( mv
) se desejar (adicionado como comentário):
#!/usr/bin/perl
# Creates link files with ascending sequence numbers ($USE_SEQ=1) or original numbers
# ($USE_SEQ=0):
$USE_SEQ = 1;
unless(opendir(DIRECTORY,".")) { die "Unable to open current directory.\n"; }
@files = readdir(DIRECTORY);
closedir(DIRECTORY);
$seqnum = 1;
foreach $file (@files) {
if ($file =~ /\.jpg$/i) {
($number) = ($file =~ /(\d+).jpg/i);
$number = $seqnum++ if $USE_SEQ;
$padded_number = sprintf "%05d", $number;
$padded_name = "out" . $padded_number . ".jpg";
`ln -s "$file" $padded_name`;
# `mv "$file" $padded_name`; # untested
}
}