Bonjour,
Je roule beaucoup (environ 3 h/jour) et je charge sur le net
(http://www.litteratureaudio.com/) des livres audio que je place sur une
clef USB.
Une fois dézippés, les chapitres se présentent de la façon suivante :
nom_du_livre_nom_de_l_auteur_chap_01.mp3
............................_chap_02.mp3
etc.
Ma clef ne sait pas classer les chapitre par ordre numérique. À la main,
je fais donc laborieusement :
mv -v *01* aa.mp3
mv -v *02* ab.mp3 etc...
Ma clef classe alors correctement :
aa.mp3
ab.mp3
...
az.mp3
ba.mp3
etc...
Je suis sûr qu'avec un bout de script, il doit être possible de ne
récupérer que les 6 derniers caractères d'un nom de fichier (01.mp3,
02.mp3...) puis de remplacer le 0 par a, le 1 par b etc sans toucher
bien sûr au 3 de mp3.
Je pense que côté « saucissonnage » du problème, je ne dois pas être
loin de la solution mais je ne sais pas bâtir le script.
Pourriez-vous m'aider ?
Serait-il possible de reproduire ces comportements en ligne de commande
Que veux-tu dire ? Un script bash dans sa forme la plus simple (comme c'est le cas ici), ce n'est jamais qu'un fichier contenant des commandes, ce qui t'évite de les re-taper à chaque fois. Lancer ce fichier ou copier-coller les lignes en question dans un shell, c'est la même chose.
Oui mais le "while/do/done" s'execute d'un coup. Lui il a envie de voir en pas par pas ;-)
Fabien LE LEZ a écrit
On Sat, 31 Jan 2009 18:42:52 +0100, Dominique <zzz@aol.com>:
Serait-il possible de reproduire ces comportements en ligne de
commande
Que veux-tu dire ?
Un script bash dans sa forme la plus simple (comme c'est le cas ici),
ce n'est jamais qu'un fichier contenant des commandes, ce qui t'évite
de les re-taper à chaque fois. Lancer ce fichier ou copier-coller les
lignes en question dans un shell, c'est la même chose.
Oui mais le "while/do/done" s'execute d'un coup. Lui il a envie de voir
en pas par pas ;-)
Serait-il possible de reproduire ces comportements en ligne de commande
Que veux-tu dire ? Un script bash dans sa forme la plus simple (comme c'est le cas ici), ce n'est jamais qu'un fichier contenant des commandes, ce qui t'évite de les re-taper à chaque fois. Lancer ce fichier ou copier-coller les lignes en question dans un shell, c'est la même chose.
Oui mais le "while/do/done" s'execute d'un coup. Lui il a envie de voir en pas par pas ;-)
Alain Montfranc
Alain Montfranc a écrit
Dominique a écrit
Alain Montfranc a écrit :
Dominique a écrit
Alain Montfranc a écrit :
#!/bin/sh
for file in *_Chap[0-9]*.mp3
Pour tous les fichiers qui matchent
do NUM=`echo $file | sed 's/.*_Chap([0-9]*).mp3/1/'`
Je recupere le NUMero en prenant la sequence de 0-9 apres _Chap et avant .mp3 ((...) correspond au 1 dans l expression de substitution
LETTERS=`echo "$NUM" | tr '[0-9]' '[a-j]'`
Je transforme les chiffres en lettres 0=>a 1=>b etc...
mv $file "$LETTERS"".mp3"
Je renomme le fichier
done
Excellent ! Peux-tu m'expliquer comment est construit ton script ? je te remercie. bonne journée,
Merci. Serait-il possible de reproduire ces comportements en ligne de commande pour observer les différents effets ? Bonne soirée,
Tu fais :file="le nom d'un des fichiers" et tu pourras executer la suite (entre le do et le done) en step by step
Les commande XXX=`blah blah` affectent le resultat de la commande vlah blah à la variable XXX. Tu px donc executer blah blah en interactif puis stocker le resultat dans la variable "pour voir"
Tu peux aussi faire :
sh -x monscript
ou monscript est le fichier qui contient le script en question
Alain Montfranc a écrit
Dominique a écrit
Alain Montfranc a écrit :
Dominique a écrit
Alain Montfranc a écrit :
#!/bin/sh
for file in *_Chap[0-9]*.mp3
Pour tous les fichiers qui matchent
do
NUM=`echo $file | sed 's/.*_Chap([0-9]*).mp3/1/'`
Je recupere le NUMero en prenant la sequence de 0-9 apres _Chap et avant
.mp3 ((...) correspond au 1 dans l expression de substitution
LETTERS=`echo "$NUM" | tr '[0-9]' '[a-j]'`
Je transforme les chiffres en lettres 0=>a 1=>b etc...
mv $file "$LETTERS"".mp3"
Je renomme le fichier
done
Excellent !
Peux-tu m'expliquer comment est construit ton script ?
je te remercie.
bonne journée,
Merci. Serait-il possible de reproduire ces comportements en ligne de
commande pour observer les différents effets ?
Bonne soirée,
Tu fais :file="le nom d'un des fichiers" et tu pourras executer la suite
(entre le do et le done) en step by step
Les commande XXX=`blah blah` affectent le resultat de la commande vlah blah à
la variable XXX. Tu px donc executer blah blah en interactif puis stocker le
resultat dans la variable "pour voir"
Tu peux aussi faire :
sh -x monscript
ou monscript est le fichier qui contient le script en question
do NUM=`echo $file | sed 's/.*_Chap([0-9]*).mp3/1/'`
Je recupere le NUMero en prenant la sequence de 0-9 apres _Chap et avant .mp3 ((...) correspond au 1 dans l expression de substitution
LETTERS=`echo "$NUM" | tr '[0-9]' '[a-j]'`
Je transforme les chiffres en lettres 0=>a 1=>b etc...
mv $file "$LETTERS"".mp3"
Je renomme le fichier
done
Excellent ! Peux-tu m'expliquer comment est construit ton script ? je te remercie. bonne journée,
Merci. Serait-il possible de reproduire ces comportements en ligne de commande pour observer les différents effets ? Bonne soirée,
Tu fais :file="le nom d'un des fichiers" et tu pourras executer la suite (entre le do et le done) en step by step
Les commande XXX=`blah blah` affectent le resultat de la commande vlah blah à la variable XXX. Tu px donc executer blah blah en interactif puis stocker le resultat dans la variable "pour voir"
Tu peux aussi faire :
sh -x monscript
ou monscript est le fichier qui contient le script en question