Tu désire renommer (mais il serait peut-être plus simple de copier dans un autre répertoire, puis effacer et recopier dans l'autre sens le script peut être dans ce cas un script SHELL mais qui sera d'autant plus long que les fichiers sont volumineux).
Pour renommer des fichiers comme tu le désires il est impératif de commencer par le dernier.
Une liste commençant par le dernier fichier logique ne peut pas être obtenue par un simple 'ls -r' car les numéros ne sont pas cadrés avec des pré-zéros. Aussi je te propose un script perl et non pas un script 'Shell'
Dans ce script il faut modifier prefixe, deb et fin et on verra par la suite si tu désires une automatisation.
Pour l'instant il s'agit d'une simulation et si la simulation te convient il suffit de supprimer le '#' devant la commande 'system .....' pour exécuter réellement le renommage.
#!/usr/bin/perl -w
my $prefixe = 'xxx' ;
my $deb = 30 ;
my $fin = 100 ;
my @fics = glob("$prefixe*.doc") ;
my %fics = () ;
foreach my $nom (@fics) {
if ( $nom =~ /^$prefixe(\d+)/ ) {
my $no = $1;
$fics{$no} = $nom ;
}
}
foreach my $no ( sort { $b <=> $a } keys %fics ) {
next if ( $no < $deb ) ;
next if ( $no > $fin ) ;
$nom = $fics{$no} ;
if ( $nom =~ /^$prefixe(\d+)/ ) {
my $nouveau_no = $no + 1 ;
my $nouveau_nom = "$prefixe$nouveau_no.doc" ;
my $cde = "mv $nom $nouveau_nom" ;
print "$cde\n" ;
# system "$cde\n" ;
}
}