Renommer des fichiers avec la date sous linux
Résolu/Fermé
baborge
Messages postés
93
Date d'inscription
dimanche 6 juin 2004
Statut
Membre
Dernière intervention
22 septembre 2012
-
17 janv. 2006 à 18:49
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 - 18 janv. 2006 à 10:45
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 - 18 janv. 2006 à 10:45
A voir également:
- Renommer un fichier linux
- Fichier rar - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Renommer plusieurs fichiers en même temps - Guide
- Ouvrir un fichier .bin - Guide
8 réponses
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 896
17 janv. 2006 à 19:27
17 janv. 2006 à 19:27
Salut,
Essaie ça :
;-))
Essaie ça :
VAR=`date +%Y-%m-%d` for i in $(ls *.sql); do mv $i `echo $i | sed "s/^\([0-9][0-9]*\)\(\.[a-z]*\)/\1-$VAR\2/"`;doneLa commande est sur une seule et même ligne à partir du "for...".
;-))
baborge
Messages postés
93
Date d'inscription
dimanche 6 juin 2004
Statut
Membre
Dernière intervention
22 septembre 2012
33
17 janv. 2006 à 19:38
17 janv. 2006 à 19:38
Merci pour ta réponse jipicy
mais ça marche pO...
Voila le message que j'obtiens:
Je continue a chercher...
Laurent
mais ça marche pO...
Voila le message que j'obtiens:
mv: 10.sql' and 10.sql' are the same file
Je continue a chercher...
Laurent
[Dal]
Messages postés
6198
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2024
1 094
17 janv. 2006 à 19:45
17 janv. 2006 à 19:45
Essaye en remplaçant l'expression régulière sed par celle-ci :
sed "s/\(.*\)\(.sql\)/\1-$VAR\2/"
Il faut que tu n'aies que des fichiers de la forme que tu as indiqué dans ce répertoire par mesure de sécurité.
Cependant, chez moi, l'expression régulière de Jipicy fonctionne.
Dal
sed "s/\(.*\)\(.sql\)/\1-$VAR\2/"
Il faut que tu n'aies que des fichiers de la forme que tu as indiqué dans ce répertoire par mesure de sécurité.
Cependant, chez moi, l'expression régulière de Jipicy fonctionne.
Dal
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 896
18 janv. 2006 à 07:49
18 janv. 2006 à 07:49
Salut [Dal],
Désolé j'ai un peu zappé ton message, ainsi que ton expression régulière, 100 fois plus simple et bien meilleure que "mamienne".
Y'a des jours comme ça où pourquoi faire simple quand on peut faire compliqué, hein ? Je vous le demande !
:-DDD
Désolé j'ai un peu zappé ton message, ainsi que ton expression régulière, 100 fois plus simple et bien meilleure que "mamienne".
Y'a des jours comme ça où pourquoi faire simple quand on peut faire compliqué, hein ? Je vous le demande !
:-DDD
[Dal]
Messages postés
6198
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2024
1 094
>
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
18 janv. 2006 à 10:45
18 janv. 2006 à 10:45
C'est pas grave, l'important c'est que çà marche.
Pour le "fun" (on s'amuse comme on peut), si on veut, on peut aussi le faire en une seule ligne, sans variable, par exemple comme çà :
Dal
Pour le "fun" (on s'amuse comme on peut), si on veut, on peut aussi le faire en une seule ligne, sans variable, par exemple comme çà :
ls -1 *.sql | sed "s/\(.*\)\(.sql\)/mv \1\2 \1-`date +%Y-%m-%d`\2/" | sh
Dal
baborge
Messages postés
93
Date d'inscription
dimanche 6 juin 2004
Statut
Membre
Dernière intervention
22 septembre 2012
33
17 janv. 2006 à 19:59
17 janv. 2006 à 19:59
Merci pour ta réponse Dal
mais ça marche pO non plu...
Voila ce que j'obtiens:
et non
il manque la date...
Je continue a chercher...
Laurent
mais ça marche pO non plu...
Voila ce que j'obtiens:
1.sql = >> 1-.sql
et non
1.sql = >> 1-2006-01-16.sql
il manque la date...
Je continue a chercher...
Laurent
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 569
17 janv. 2006 à 19:59
17 janv. 2006 à 19:59
Bonsoir à tous,
ça m'étonnerait si on n'avait pas la version sed de jipicy.
Voilà une version perl.
Exécution:
a+
lami20j
ça m'étonnerait si on n'avait pas la version sed de jipicy.
Voilà une version perl.
#! /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/lamitest/test/*.sql"; foreach (@fic){ (my $new_name = $_)=~ s/(\d+)(\.sql)/$1-$a-$m-$j$2/; rename $_,$new_name;
Exécution:
[lamitest@localhost ~]$ ls -l test/ total 0 -rw-rw-r-- 1 lamitest lamitest 0 jan 17 20:03 100.sql -rw-rw-r-- 1 lamitest lamitest 0 jan 17 20:02 10.sql -rw-rw-r-- 1 lamitest lamitest 0 jan 17 20:02 1.sql -rw-rw-r-- 1 lamitest lamitest 0 jan 17 20:02 2.sql [lamitest@localhost ~]$ perl rename_date.pl [lamitest@localhost ~]$ ls -l test/ total 0 -rw-rw-r-- 1 lamitest lamitest 0 jan 17 20:03 100-2006-01-17.sql -rw-rw-r-- 1 lamitest lamitest 0 jan 17 20:02 10-2006-01-17.sql -rw-rw-r-- 1 lamitest lamitest 0 jan 17 20:02 1-2006-01-17.sql -rw-rw-r-- 1 lamitest lamitest 0 jan 17 20:02 2-2006-01-17.sql
a+
lami20j
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 896
17 janv. 2006 à 20:08
17 janv. 2006 à 20:08
Re-
Ben voilà ce que ça donne chez moi, et je n'aurai pas posté sans en avoir fait le test... ;-))
Ben voilà ce que ça donne chez moi, et je n'aurai pas posté sans en avoir fait le test... ;-))
[jp@Mandrake tmpfs]$ ls -1 10.sql 1.sql 2.sql 3.sql 4.sql 5.sql 6.sql 7.sql 8.sql 9.sql [jp@Mandrake tmpfs]$ VAR=`date +%Y-%m-%d` [jp@Mandrake tmpfs]$ echo $VAR 2006-01-17 [jp@Mandrake tmpfs]$ for i in $(ls *.sql); do mv $i `echo $i | sed "s/^\([0-9][0-9]*\)\(\.[a-z]*\)/\1-$VAR\2/"`;done [jp@Mandrake tmpfs]$ ls -1 10-2006-01-17.sql 1-2006-01-17.sql 2-2006-01-17.sql 3-2006-01-17.sql 4-2006-01-17.sql 5-2006-01-17.sql 6-2006-01-17.sql 7-2006-01-17.sql 8-2006-01-17.sql 9-2006-01-17.sql [jp@Mandrake tmpfs]$;-))
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 569
17 janv. 2006 à 20:18
17 janv. 2006 à 20:18
Salut jipicy,
et je n'aurai pas posté sans en avoir fait le test... ;-))
J'en suis certain. Il a du faire une erreur quelque part.
a+
et je n'aurai pas posté sans en avoir fait le test... ;-))
J'en suis certain. Il a du faire une erreur quelque part.
a+
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 896
>
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
17 janv. 2006 à 20:26
17 janv. 2006 à 20:26
Salut Laurent,
Il a du faire une erreur quelque part
Ca c'est presque sur, entre les quotes, les doubles-quotes et les quotes inversées (elles y sont toutes dans la syntaxe :-)) ), il en faut peu pour que ça déraille :-DD
baborge ==>> Poste-nous la ligne de commande que tu tapes et le listing de ton répertoire aussi...s'il te plaît, merci ;-))
Il a du faire une erreur quelque part
Ca c'est presque sur, entre les quotes, les doubles-quotes et les quotes inversées (elles y sont toutes dans la syntaxe :-)) ), il en faut peu pour que ça déraille :-DD
baborge ==>> Poste-nous la ligne de commande que tu tapes et le listing de ton répertoire aussi...s'il te plaît, merci ;-))
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 569
17 janv. 2006 à 20:10
17 janv. 2006 à 20:10
Re,
Je suis novice sous linux en ce cas j'aurais du détailler un peu.
Donc ce que tu vois ici tu dois copier dans un fichier dont tu le nommes comment tu veux.
Ensuite il faut voir dans quel répertoire tu travaille et modifier dans le script (voir le commentaire - mets ici ton répertoire).
Tu n'as que à taper perl nom_de_ton_script
Je suis novice sous linux en ce cas j'aurais du détailler un peu.
Donc ce que tu vois ici tu dois copier dans un fichier dont tu le nommes comment tu veux.
Ensuite il faut voir dans quel répertoire tu travaille et modifier dans le script (voir le commentaire - mets ici ton répertoire).
Tu n'as que à taper perl nom_de_ton_script
#! /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/lamitest/test/*.sql"; # mets ici ton répertoire foreach (@fic){ (my $new_name = $_)=~ s/(\d+)(\.sql)/$1-$a-$m-$j$2/; rename $_,$new_name;
baborge
Messages postés
93
Date d'inscription
dimanche 6 juin 2004
Statut
Membre
Dernière intervention
22 septembre 2012
33
17 janv. 2006 à 21:45
17 janv. 2006 à 21:45
Merci Messieurs,
et excuser moi pour les messages d'erreur qui n'étaient dus qu'a moi...
des erreur dans le copier - coller
encore merci
et bonne soirée
Laurent
et excuser moi pour les messages d'erreur qui n'étaient dus qu'a moi...
des erreur dans le copier - coller
encore merci
et bonne soirée
Laurent