Rename des fichiers avec la date sous Linux 2
Résolu/Fermé
baborge
Messages postés
93
Date d'inscription
dimanche 6 juin 2004
Statut
Membre
Dernière intervention
22 septembre 2012
-
5 mars 2006 à 11:56
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 5 mars 2006 à 16:38
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 5 mars 2006 à 16:38
A voir également:
- Rename des fichiers avec la date sous Linux 2
- Wetransfer gratuit fichiers lourd - Guide
- Comment réduire la taille d'un fichier - Guide
- 2 comptes whatsapp - Guide
- Renommer plusieurs fichiers - Guide
- Fusionner 2 fichiers excel - Guide
4 réponses
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 567
5 mars 2006 à 13:24
5 mars 2006 à 13:24
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; }
baborge
Messages postés
93
Date d'inscription
dimanche 6 juin 2004
Statut
Membre
Dernière intervention
22 septembre 2012
33
5 mars 2006 à 13:33
5 mars 2006 à 13:33
Re
Merci lami20j
tout marche super
@+
laurent
Merci lami20j
tout marche super
@+
laurent
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 567
5 mars 2006 à 13:41
5 mars 2006 à 13:41
Re,
de rien.
Petite question. As-tu compris la pourquoi ton regex ne te satisfaisait pas?
Et celui là oui?
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.
de rien.
Petite question. As-tu compris la pourquoi ton regex ne te satisfaisait pas?
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.
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 567
5 mars 2006 à 16:38
5 mars 2006 à 16:38
Re,
voilà encore un version dans laquelle on n'a pas des références arrières. Un seul test avant pour tester l'extension fait l'affaire.
voilà encore un version dans laquelle on n'a pas des références arrières. Un seul test avant pour tester l'extension fait l'affaire.
#! /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; }