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 :

Remplacer 1 par 01, 2 par 02


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Février 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 4
    Par défaut Remplacer 1 par 01, 2 par 02
    Bonjour tout le monde,

    Je suis en train de me créer un script permettant de renommer mes sous titres (fichiers .srt) automatiquement.
    Etant donné que j'adore être ordonné, voila comment sont organisées mes sous titres :

    Serie.S01E01.srt
    Serie.S01E02.srt
    ...
    Serie.S01E10.srt
    Serie.S01E11.srt

    J'ai donc crée ce script pour l'instant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #!/bin/bash
    num=0
    for FICH in ./*.srt; do
    	num=$[ $num + 1 ]
    	mv "$FICH" "$1.S0$2E$num.srt"
    done
    Mais à ce moment la, j'ai un problème : mes fichiers se nomment alors :

    Serie.S01E11.srt
    Serie.S01E12.srt
    ...
    Serie.S01E1.srt
    Serie.S01E2.srt

    -->> L'ordre des fichiers n'est donc plus conservé.

    Comment puis je obliger à utiliser 2 chiffres ? (1 -> 01; 2 -> 02...)

    Merci d'avance

  2. #2
    Membre Expert
    Avatar de narmataru
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 548
    Par défaut
    Bonjour,
    La commande 'rename' est pas mal pour ça :

    narma@linimi:/tmp/aaa$ for i in $(seq 10); do touch Serie.S01E$i.srt; done
    narma@linimi:/tmp/aaa$ ls -1
    Serie.S01E10.srt
    Serie.S01E1.srt
    Serie.S01E2.srt
    Serie.S01E3.srt
    Serie.S01E4.srt
    Serie.S01E5.srt
    Serie.S01E6.srt
    Serie.S01E7.srt
    Serie.S01E8.srt
    Serie.S01E9.srt
    narma@linimi:/tmp/aaa$ rename 's/E([0-9])\./E0$1./' *
    narma@linimi:/tmp/aaa$ ls -1
    Serie.S01E01.srt
    Serie.S01E02.srt
    Serie.S01E03.srt
    Serie.S01E04.srt
    Serie.S01E05.srt
    Serie.S01E06.srt
    Serie.S01E07.srt
    Serie.S01E08.srt
    Serie.S01E09.srt
    Serie.S01E10.srt

  3. #3
    Candidat au Club
    Inscrit en
    Février 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 4
    Par défaut
    Merci bcp pour la réponse

    edit : bizarre, tout ceci ne fonctionne pas chez moi Faut il qqlchose de spécial ?

  4. #4
    Membre Expert
    Avatar de narmataru
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 548
    Par défaut
    C'est sure qu'avec ça on peut t'aider
    Ca fonctionne pas çaveut dire quoi ? donne nous au moins l'erreur s'il y en a une...

  5. #5
    Candidat au Club
    Inscrit en
    Février 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 4
    Par défaut
    Le problème c'est qu'il n'y a aucune erreur : ca ne change tout simplement rien.

    J'ai tapé exactement la meme chose que toi dans ma console : ca m'a donc crée mes 10 fiichiers, mais quand je fais rename rien ne change

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [fdm_spawn@localhost test]$ for i in $(seq 10); do touch Serie.S01E$i.srt; done
    [fdm_spawn@localhost test]$ ls
    Serie.S01E10.srt  Serie.S01E3.srt  Serie.S01E6.srt  Serie.S01E9.srt
    Serie.S01E1.srt   Serie.S01E4.srt  Serie.S01E7.srt
    Serie.S01E2.srt   Serie.S01E5.srt  Serie.S01E8.srt
    [fdm_spawn@localhost test]$ rename 's/E([0-9])\./E0$1./' *
    [fdm_spawn@localhost test]$ ls
    Serie.S01E10.srt  Serie.S01E3.srt  Serie.S01E6.srt  Serie.S01E9.srt
    Serie.S01E1.srt   Serie.S01E4.srt  Serie.S01E7.srt
    Serie.S01E2.srt   Serie.S01E5.srt  Serie.S01E8.srt

  6. #6
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    for i in $(seq 10); do touch Serie.S01E$(printf "%02d" $i).srt; done
    devrait fonctionner

Discussions similaires

  1. remplacer une frame de menu par du JS
    Par 17mounir dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 17/08/2005, 17h39
  2. [Struts] Remplacer le bouton submit typique par une image
    Par olivangel dans le forum Struts 1
    Réponses: 5
    Dernier message: 04/08/2005, 12h29
  3. remplacer des sauts de ligne par '\n'
    Par Miksimus dans le forum Général Python
    Réponses: 5
    Dernier message: 18/07/2005, 10h01
  4. Réponses: 4
    Dernier message: 24/01/2005, 15h50
  5. Réponses: 4
    Dernier message: 16/04/2004, 16h31

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