Citation
Nicolasdijon
=> ACDC - Back In Black.gp3
=> INSERT INTO `data` VALUES ('', 'ACDC', 'Back
In Black', 'gp3', 'ACDC - Back In Black.gp3');
sed -r "s|(.*) - (.*)\.(gp[3-5])|INSERT INTO 'data' VALUES \('', '\1', '\2', '\3', '\1 - \2.\3');|"
for i in $( ls repetoire_fichiers ) do echo INSERT INTO \'data\' VALUES \(\",\'${i%%-*}\', \'$( echo $i |sed -e 's/[^-]*-\([^\.]*\)\..*/\1/g' )\',\'${i##*.}\'\)\; >> fichier_script_mysql.sql done
TROP DANGEREUX !!! Si un des fichiers possède un espace dans son nom, t'auras 2 itérations ratées et le fichier ne sera pas traitéCitation
Frédéric Brugmans
for i in $( ls repetoire_fichiers )
ls repertoire_fichiers |while read i
ls repertoire_fichiers |while read imais ca fait la même chose étrange?
for i in $( ls repetoire_fichiers ) do IFSBAK=$IFS IFS=$'\n' echo INSERT INTO \'data\' VALUES \(\",\'${i%%-*}\', \'$( echo $i |sed -e 's/[^-]*-\([^\.]*\)\..*/\1/g' )\',\'${i##*.}\'\)\; >> fichier_script_mysql.sql done
#!/bin/sh IFSBAK=$IFS IFS=$'\n' for i in $( ls repetoire_fichiers ) do echo INSERT INTO \'data\' VALUES \(\",\'${i%%-*}\', \'$( echo $i |sed -e 's/[^-]*-\([^\.]*\)\..*/\1/g' )\',\'${i##*.}\'\)\; >> fichier_script_mysql.sql done
Citation
Frédéric Brugmans
Nope
#!/bin/sh
IFSBAK=$IFS
IFS=$'\n'
for i in $( ls repetoire_fichiers )
do
echo INSERT INTO \'data\' VALUES
\(\",\'${i%%-*}\', \'$( echo $i |sed -e
's/[^-]*-\([^\.]*\)\..*/\1/g' )\',\'${i##*.}\'\)\;
>> fichier_script_mysql.sql
done
#!/bin/sh rm -f script.sql ls repertoire |while read titre do groupe=`echo $titre |cut -f1 -d" -"` nom=`echo $titre |cut -f2 -d"- "` racine=`echo $nom |cut -f1 -d"."` extension=`echo $nom |cut -f2 -d"."` echo "INSERT INTO \`data\` VALUES (\",'$groupe','$racine','$extension','$nom');" >> script.sql doneCe script part du principe que tous les noms sont de la forme "groupe - titre.xxx". Si évidemment le format des noms est plus variable, il convient de créer un découpage plus intelligent pour répondre à toutes les variantes possibles...
Tout à fait. Mais sa valeur est différente de la valeur originelle dans la zone du script située entre le "do" et le "done"...Citation
Frédéric Brugmans
Pour IFS, oui elle est importante, mais comme le
script est lancé dans un "sous-shell", tu récupères ton IFS à la sortie du script
old="$IFS"; IFS=truc; set machin; IFS="$old"; unset old