|
|
|
|
Salut a tous
vous m'avez aider
a renommer tous les fichiers d'un répertoire sous LINUX avec une commande en shell:
#! /usr/bin/perl -w
use strict;
my ($jour,$mois,$annee)=(localtime)[3,4,5];
my $j = sprintf("%02d",$jour);
my $m = sprintf("%02d",$mois+1);
my $a = $annee+1900;
my @fic = glob "/home/ovh/sauveDB/*.sql";
foreach (@fic){
(my $new_name = $_)=~ s/(\d+)(\.sql)/$1_$a-$m-$j$2/;
rename $_,$new_name;
}
1.sql 2.sql ... 100.sql
mysql.sql compteur.sql etc...
Salut,
#! /usr/bin/perl -w
use strict;
my ($jour,$mois,$annee)=(localtime)[3,4,5];
my $j = sprintf("%02d",$jour);
my $m = sprintf("%02d",$mois+1);
my $a = $annee+1900;
#my @fic = glob "/home/ovh/sauveDB/*.sql"; pas besoin
foreach (glob "/home/ovh/sauveDB/*.sql"){
(my $new_name = $_)=~ s/^ # début de chaine
(.*) # tout caractère
(?=\.sql)
# test avant .sql (ne consomme pas de texte)
/$1_$a-$m-$j/x;
rename $_,$new_name;
} |
Re,
s/(\d+)(\.sql)/$1_$a-$m-$j$2/ Et celui là oui? s/^ # début de chaine (.*) # tout caractère (?=\.sql) # test avant .sql (ne consomme pas de texte) /$1_$a-$m-$j/x; C'est bien de comprendre pourqoui et aussi d'étudier tout les cas puisque la regex que je t'ai donné n'est pas parfaite. Comment se comportera elle sur des fichiers dont le nom est aaa.SQL ou aaa.sql.sql ou encore 01.sql.02.sql ? Même si tu dit que ça ne serez pas le cas, on ne sait jamais. A toi de voir. |
Re,
#! /usr/bin/perl -w
use strict;
foreach (glob "/home/ovh/sauveDB/*.sql"){
(my $new_name = $_)=~ s/(?=\.sql)/'_' . `date +%F`/e;
$new_name =~ s/\n//; # le résultat de date contient un \n
rename $_,$new_name;
} |