Rechercher : dans
Par :

Rename des fichiers avec la date sous Linux 2

Dernière réponse le 5 mar 2006 à 16:38:46 baborge, le 5 mar 2006 à 11:56:23 
 Signaler ce message aux modérateurs

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;
}


mais lors de ma demande, je n'avais préciser que les fichiers sont sous la forme :

1.sql
2.sql
...
100.sql



alors que j'ai d'autres fichiers dans ce répertoire:

mysql.sql
compteur.sql
etc...


et la commande précédante ne les prends pas en compte...

pouvez vous me donner un coup de main supplémentaire...

Merci d'avance

laurent

Meilleures réponses pour « rename des fichiers avec la date sous Linux 2 » dans :
Fichier DAT Voir Format DAT Un fichier DAT Un fichier .dat est un fichier de données (.DAT signifie data). En général, il s'agit d'un fichier binaire, créé par un programme et utilisable uniquement par ce programme, ce qui signifie qu'il n'est pas censé être ouvert...
L'arborescence du système de fichiers de Linux Voir Linux possède de nombreux répertoires, et ils ont chacun leur rôle. (Note: D'une distribution à l'autre, ces répertoires peuvent être différents.) Sous Windows, un fichier est un fichier. Sous Linux, un fichier peut représenter: un fichier, un...
[Pratique] Gérer les profils Firefox, Thunderbird, Seamonkey VoirGérer les profils de Firefox, Thunderbird, Seamonkey 1 - Gestionnaire de profils 1.1 - Windows 1.2 - Linux 2 - Les fichiers récupérables 2.1 - Où les trouver ? 2.2 - Quels fichiers sont intéressants ? 3 - Compléments...
Linux - L'arborescence des fichiers VoirLa hiérarchie des fichiers sous Linux Pour assurer la compatibilité et la portabilité, les systèmes Linux respectent l'unique norme FHS (File Hierarchy Standard). La hiérarchie de base est la suivante : /la racine, elle contient les...

1

lami20j, le 5 mar 2006 à 13:24:43

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;
}

Répondre à lami20j

2

baborge, le 5 mar 2006 à 13:33:05

Re

Merci lami20j

tout marche super

@+

laurent

Répondre à baborge

3

lami20j, le 5 mar 2006 à 13:41:44

Re,

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.

Répondre à lami20j

4

 lami20j, le 5 mar 2006 à 16:38:46

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.

#! /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;
}

Répondre à lami20j
Collection CommentÇaMarche.net