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

Shell et commandes GNU Discussion :

renommer une liste de fichiers


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Inscrit en
    Septembre 2007
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1
    Par défaut renommer une liste de fichiers
    bonjour

    j'ai un scripts qui me pose probléme.
    il a 2 opérations a faire en mêmes temps.

    -1 je voudrais renomer plus d'une 100éne de fichiers
    en ajoutant un compteur.

    toto.bis.123-01
    toto.bis.178-08
    toto.bis.789-05
    ......

    en
    0001.toto.bis
    0002.toto.bis
    0003.toto.bis
    ......

    -2 creer un fichier vide avec le mêmes numero d'incrémentation mais avec la fin du nom du fichier

    0001.bis.123-01
    0002.bis.178-08
    0003.bis.789-05
    .......

    A+
    enco

  2. #2
    Membre chevronné
    Avatar de argoet
    Inscrit en
    Mai 2002
    Messages
    582
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 582
    Par défaut
    Je n'ai pas d'unix sous la main (à cette heure ci )
    Mais vous pouvez , déja , vous inspirer du code ci-dessous
    PS :la syntaxe n'est pas garantie (Saint Axe Error Priez pour Nous )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #!/bin/ksh
     
    num=0
    #=================================
    # Pour l'ensemble des fichiers de type toto.bis.*
    for i in  toto.bis.*
    do
         # num = num + 1 (cadré avec des 0 à gauche sur 4 caractère)
         num=`expr $num + 1 | awk ' { printf("%04d", $0) } '`
         # on renome le fichier
         mv $i ${num}.toto.bis
         # on créé un fichier vide
         touch $num.$i
    done

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Par défaut
    Oui mais aujourd'hii :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    #!/bin/sh
     
    num=0
    #=================================
    # Pour l'ensemble des fichiers de type toto.bis.*
    for i in  toto.bis.*
    do
         # num = num + 1 (cadré avec des 0 à gauche sur 4 caractère)
         (( num = num + 1 ))
         printf "%04d\n" ${num}
         # on renomme le fichier
         mv $i ${num}.toto.bis
         # on créé un fichier vide
         > $num.$i
    done

  4. #4
    Membre Expert Avatar de jeanbi
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 703
    Par défaut
    bonjour,
    en graphique il y a Métamorphose qui n'est pas mal non plus et qui peut dépanner
    http://www.framasoft.net/article4371.html
    a+

  5. #5
    LLB
    LLB est déconnecté
    Membre émérite
    Inscrit en
    Mars 2002
    Messages
    968
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 968
    Par défaut
    Personnellement, je n'ai jamais trouvé plus puissant que zsh pour faire du renommage de fichier.

    Pour le renommage demandé, on peut faire une boucle for :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c=1; for i (toto.*) mv $i ${(l:4::0:)$((c++))}.$i:r
    Ou utiliser zmv (intégré dans zsh) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c=1 zmv 'toto.*' '${(l:4::0:)$((c++))}.toto.bis'
    Pour faire l'ensemble des opérations demandées (renommage + création), ça tient en une ligne (même pas besoin de créer un fichier exprès pour) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c=1; for i (toto.*) {mv $i ${(l:4::0:)c}.$i:r; touch ${(l:4::0:)$((c++))}.bis.$i:e}
    Pour la plupart des renommages courants, c'est très simple à utiliser.

Discussions similaires

  1. renommer une liste de fichiers
    Par modere dans le forum Windows
    Réponses: 8
    Dernier message: 14/04/2010, 16h21
  2. Réponses: 2
    Dernier message: 03/07/2006, 20h14
  3. [JSP] Trier par date une liste de fichier en JSP
    Par Total dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 21/02/2006, 15h38
  4. [VB]Récupérer une liste de fichiers
    Par yaya54 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 20/02/2006, 16h03
  5. Réponses: 10
    Dernier message: 30/01/2005, 20h53

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