Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/02/2007, 23h02   #1
Invité de passage
 
Inscription : février 2007
Messages : 4
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 4
Points : 0
Points : 0
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 :
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
fdm_spawn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2007, 08h51   #2
Membre Expert
 
Avatar de narmataru
 
Inscription : décembre 2002
Messages : 1 423
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : décembre 2002
Messages : 1 423
Points : 1 491
Points : 1 491
Bonjour,
La commande 'rename' est pas mal pour ça :

Citation:
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
__________________
Reportage d'Arte sur Linux
narmataru est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2007, 17h38   #3
Invité de passage
 
Inscription : février 2007
Messages : 4
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 4
Points : 0
Points : 0
Merci bcp pour la réponse

edit : bizarre, tout ceci ne fonctionne pas chez moi Faut il qqlchose de spécial ?
fdm_spawn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2007, 18h03   #4
Membre Expert
 
Avatar de narmataru
 
Inscription : décembre 2002
Messages : 1 423
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : décembre 2002
Messages : 1 423
Points : 1 491
Points : 1 491
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...
__________________
Reportage d'Arte sur Linux
narmataru est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2007, 18h20   #5
Invité de passage
 
Inscription : février 2007
Messages : 4
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 4
Points : 0
Points : 0
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 :
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
fdm_spawn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2007, 09h49   #6
Rédacteur
 
Inscription : mars 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 1 298
Points : 1 450
Points : 1 450
Code :
1
2
 
for i in $(seq 10); do touch Serie.S01E$(printf "%02d" $i).srt; done
devrait fonctionner
__________________
Marc
Slackware for ever ......
BASH - KSH ( http://marcg.developpez.com/ksh/ )
MarcG est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2007, 13h10   #7
Membre émérite
 
Avatar de Celelibi
 
Inscription : janvier 2004
Messages : 990
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 990
Points : 822
Points : 822
Humpf...

La boucle avec la commande touch ne servait dans son exemple qu'à créer les fichiers dont le nom est similaire à ceux qui existent déjà. En gros c'est pour recréer le problème afin de chercher une solution.
Si il fallait générer les fichiers avec une numérotation précédé de "0" l'option -w de seq ferait parfaitement l'affaire, pas besoin de passer par une sous-commande et un printf.



fdm_spawn, chez moi ça marche. Essaye de rajouter l'option -n à la commande seq pour voir quel renommage de fichier serait fait.
Code :
1
2
3
4
5
6
7
8
9
10
$ rename -n 's/E([0-9])\./E0$1./' *                  
Serie.S01E1.srt renamed as Serie.S01E01.srt
Serie.S01E2.srt renamed as Serie.S01E02.srt
Serie.S01E3.srt renamed as Serie.S01E03.srt
Serie.S01E4.srt renamed as Serie.S01E04.srt
Serie.S01E5.srt renamed as Serie.S01E05.srt
Serie.S01E6.srt renamed as Serie.S01E06.srt
Serie.S01E7.srt renamed as Serie.S01E07.srt
Serie.S01E8.srt renamed as Serie.S01E08.srt
Serie.S01E9.srt renamed as Serie.S01E09.srt
La commande rename (en fait prename) est fournie avec le package perl (du moins sous debian).
__________________
Les vaches ne peuvent PAS voler, quoi qu'elles aient pu vous raconter.
Celelibi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2007, 13h46   #8
Invité de passage
 
Inscription : février 2007
Messages : 4
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 4
Points : 0
Points : 0
Merci bcp, problème résolu
fdm_spawn est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h43.


 
 
 
 
Partenaires

Hébergement Web