Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Nouveau Candidat au Club
    [langage] Renommer un fichier par permutation de caractères.
    Bonjour,

    Petit nouveau sur ce forum, j'ai une rude question existentielle concernant des fichiers à renommer.

    Ces fichiers sont sous la forme nnsocxxx.* avec nn représentant l'année sur deux chiffres de 95 à 07 (pour le moment), soc représentant un nom de société (3 lettres) et xxx le numéro du fichier en trois ou quatre chiffres.

    Le but est de permutter nn et soc pour permettre des requêtes SQL (refusées si le fichier commence par des caractères numériques).

    Je me demandais si cela était possible en perl, étant loin d'être un cador sur le sujet.

    Merci

    Nicolas

  2. #2
    Membre émérite
    Voici déjà comment renommer ton fichier:


    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    use strict;
     
    my $nom ="nnsocxxx";
    my $annee =  substr( $nom, 0, 2);
    my $soc = substr( $nom, 2, 3);
    my $fichier=substr($nom, 5); # prend la fin de nom qu'il y ait 3 ou 4 caractères
     
    my $renom=$soc.$annee.$fichier;
    print $renom;


    Donne "socnnxxx";




    Il faut faire une boucle qui appelle un à un tes fichiers du répertoire et ensuite utiliser la fonction "rename" en perl.
    Quelle est ta requête SQL refusée quand un fichier commence par un chiffre?


    Jasmine,
    -- Jasmine --

  3. #3
    Nouveau Candidat au Club
    Merci pour la réponse.
    J'ai eu une autre proposition par une biais différent :


    foreach (glob '*')
    {
    if ( (my $nouveau = $_) =~ s/^([0-9]{2})(.{3})/$2$1/ )
    {
    rename $_, $nouveau;
    }
    }
    La requête SQL est faite à partir d'une base de données propriétaire appelée Critérie de Prologue Software.

    Nicolas

  4. ###raw>post.musername###
    Responsable Perl et Outils
    Le But de ce forum est de vous aider, après que vous ayez mous même cherché un peu. Donc la prochaine fois, poste nous un bout de ton code.
    Voici ce que tu peux faire :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #!/usr/bin/perl -w
    use strict;
    use Carp;
     
    my $fichier = "C:/Mes Documents/97aix2345.txt";
    my $new_file = $fichier;
    $new_file =~ s/(.*[\/\\])(\d{2})(\w{3})(\d+)/$1$3$2$4/;
    print $new_file,"\n";
    # Et pour renommer, utilise cette fonction rename
    #rename($fichier,$new_file);

    voilà, à toi d'adapter ce code à tes besoins
      0  0

  5. #5
    Nouveau Candidat au Club
    Le bout de code que j'ai posté m'a été envoyé après avoir posté ici. Jje ne pensais pas obtenir une réponse si rapidement.

    Nicolas