IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Langage Perl Discussion :

[langage] Renommer un fichier par permutation de caractères.


Sujet :

Langage Perl

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 3
    Points : 1
    Points
    1
    Par défaut [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
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    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
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    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. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    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

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    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

Discussions similaires

  1. [Batch] Renommer des fichiers par lot
    Par mikeduff dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 05/05/2020, 12h30
  2. [Batch] Renommer plusieurs fichiers par incrementation
    Par snake382 dans le forum Scripts/Batch
    Réponses: 9
    Dernier message: 07/05/2014, 18h33
  3. [Batch] MSDOS - renommer des fichiers par leurs checksum
    Par ben7875 dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 18/07/2011, 09h47
  4. renommer les fichier par script en nom_dossier_jour.jpg
    Par gotcha5832 dans le forum Shell et commandes GNU
    Réponses: 12
    Dernier message: 06/01/2010, 17h44
  5. Eviter de renommer des fichiers par erreur
    Par sechanbask dans le forum Windows XP
    Réponses: 1
    Dernier message: 29/03/2009, 14h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo