Pages : 1
#1 Le 16/11/2005, à 18:29
- Black_pignouf
Scripteur du dimanche
Bonjour à tous,
je m'occupe d'un site dédié aux tablatures d'harmonica
http://www.grotch.tk/
et je voudrais profiter de la puissance d'Ubuntu et de l'open source pour m'aider à rajouter des tablatures.
Ce que je voudrais savoir, tout d'abord :
-comment appliquer un patch à un répertoire de sources. Dans mon cas,
patch:
http://archive.ubuntu.com/ubuntu/pool/u … -1.diff.gz
original:
http://archive.ubuntu.com/ubuntu/pool/u … rig.tar.gz
tous deux disponibles ici:
http://packages.ubuntu.com/breezy/sound/abcmidi
j'ai bien essayé avec "patch", mais il me dit que je suis bien gentil en voulant appliquer un patch à un répertoire.
-2ème point
je voudrais scripter ce "code":
appliquer à tous les fichiers .mid récents (pas plus vieux que X jours) d'un certain répertoire (ci-possible spécifié en option du script):
{
cp source_midi_numero_i.mid repertoire_fils_nommé_source_midi_numero_i/
mftext source_midi_numero_i.mid > fichier_texte dans ce répertoire
midi2abc source_midi_numero_i.mid -> fichier_abc dans ce répertoire
abcm2ps fichier_abc_créé -> fichier_ps dans le même répertoire
ps2pdf -> fichier_pdf dans le même répertoire
rm fichier_ps
pour chaque track j du fichier.mid, faire
{
midicopy -tr j fichier-track_j.mid
}
}
Ok, c'est long et bête, et je ne veux surtout pas vous forcer à écrire ce script pour moi (quoi que... mais je voudrais savoir s'il existe des aides au codage de script (genre Anjuta pour C) et des références et tutos pour apprendre.
Merci beaucoup,
Eric
Dernière modification par Black_pignouf (Le 16/11/2005, à 20:06)
Hors ligne
#2 Le 17/11/2005, à 00:27
- Black_pignouf
Re : Scripteur du dimanche
Aie aie aie.... j'envoie des posts tellement intéressants que je suis le seul à y répondre
voilà ce que j'ai trouvé pour l'instant...
#! /bin/bash
#create the output directory
mkdir -p ~/Documents/midi;
for midifile in `find $1 -name '*.mid'` ;
do
basemidi=$(basename $midifile);
#remove the .mid in the namefile
base=$(echo $basemidi | cut -d"." -f1);
if test -e ~/Documents/midi/$base;
then
echo Already converted : $base
else
#create the corresponding directory
mkdir -p ~/Documents/midi/$base;
echo $base;
#copy the midi file
cp $midifile ~/Documents/midi/$base/;
newfile=~/Documents/midi/$base/$basemidi;
#convert to abc
midi2abc $newfile -o ~/Documents/midi/$base/$base.abc;
#convert to ps
abcm2ps ~/Documents/midi/$base/$base.abc -O ~/Documents/midi/$base/$base.ps;
#convert to pdf
ps2pdf ~/Documents/midi/$base/$base.ps ~/Documents/midi/$base/$base.pdf;
#remove .ps
rm ~/Documents/midi/$base/$base.ps;
#look for the number of tracks in the midi file
ntrks=$(mftext $newfile | grep "ntrks" | cut -d" " -f3 | cut -d"=" -f2);
fi
done
C'est pas complet du tout, et je voudrais savoir comment écrire en bash:
pour i de 1 à $ntrks
...................
finpour
c'est possible? même si ntrks est une chaine de caractères?
Merci d'avance
Dernière modification par Black_pignouf (Le 17/11/2005, à 00:28)
Hors ligne
#3 Le 25/01/2006, à 19:13
- severino
Re : Scripteur du dimanche
pour i de 1 à $ntrks
...................
finpour
for i in `$(seq $ntrks)`
do ..................
done
ou
for (( i=1, i<=$ntrks, i++ ))
do ...................
done
Peut-être (?)
Hors ligne
Pages : 1