Lister contenu répertoire et passage argume

Résolu/Fermé
cobra85 Messages postés 132 Date d'inscription mercredi 20 décembre 2006 Statut Membre Dernière intervention 15 novembre 2014 - 17 juin 2009 à 11:23
cobra85 Messages postés 132 Date d'inscription mercredi 20 décembre 2006 Statut Membre Dernière intervention 15 novembre 2014 - 17 juin 2009 à 16:18
Bonjour,

Je voudrai un script shell ou bash pour recupérer des noms de fichiers sans l'extention si possible dont je ne connait pas les noms et les passer en arguments pour les inserer dans des requetes SQL et les mettre en fin de nom.

J'ai un "debut" de script pour supprimer les extentions:

$ F='rep/toto.txt'
$ echo $ {F%.*}
rep/toto


Début de script pour le passage d'argument:

$ X=22
$ le prix est de ${X}

le probleme est que je n'arrive pas à mixer tout cela pour faire un script potable

Merci
A voir également:

5 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
17 juin 2009 à 11:29
Salut,

A quoi ressemble ta requête SQL et où doivent être insérés les noms sans extensions ?

En gros un exemple du contenu de ton répertoire, suivi d'un exemple de ta requête tel qu'elle doit être...
0
cobra85 Messages postés 132 Date d'inscription mercredi 20 décembre 2006 Statut Membre Dernière intervention 15 novembre 2014 3
17 juin 2009 à 11:50
Voici une partie du code.

Je voudrai que le fichier coordonnee1 qui est inscrit en dur puisse etre remplacé par les noms des fichiers de manieres dynamique, sans être obligé de créer un script pour chaque fichier.

le nom doit etre inscrit dans la requete SQL.

Ici, remplacer tout les coordonnee1 par un passage d'argument qui inscriera le nom du fichier.

#$ nl adress_coordonnee1.awk
{
sed "s/address /'/g" adress2_coordonnee1.txt > adress1_coordonnee1.txt
sed "s/rue/'/g" adress1_coordonnee1.txt > adress2_coordonnee1.txt

#permet de vider la table avant de la remplir
echo 'echo "truncate table "adresse_coordonnee1" ;" | mysql fournisseur ' > ADRESSE_FINAL_COORDONNEE1.sql


#affiche "insert into ..." dans un fichier nommé adress_text.csv
echo 'echo "insert into adresse_coordonnee1 (adresse, rue) values '> adress_text.csv

#permet d'inserer les données de adress1_coordonnee1.txt dans adress_text.csv tout en gardant en mémoire les valeurs déja inscrites dans ce fichier.
cat adress1_coordonnee1.txt >> adress_text.csv

#permet de supprimer les retours chariots du fichier adress_text.txt puis de tout mettre dans un fichier adress1_text.csv
tr -d '\r\n' < adress_text.csv > adress1_text.csv


sed 's/)(/), (/g' adress1_text.csv > adress2_text.csv
sed 's/)*$/);" | mysql founisseur/g' adress2_text.csv > adress3_text.csv


echo -e '\n' >> adress3_text.csv
cat adress3_text.csv >> ADRESSE_FINAL_COORDONNEE1.sql


#permet de supprimer définitivement les fichiers intermédiaires générés après l'éxécution du script sans les mettre dans la poubelle. Il ne restera que ADRESSE_FINAL.sql
rm adress3_COORDONNEE1.txt
rm adress2_COORDONNEE1.txt
rm adress1_COORDONNEE1.txt
rm adress_text.csv
rm adress1_text.csv
rm adress2_text.csv
rm adress3_text.csv
}


merci
0
cobra85 Messages postés 132 Date d'inscription mercredi 20 décembre 2006 Statut Membre Dernière intervention 15 novembre 2014 3
17 juin 2009 à 11:53
J'ai oublié, pour le contenu du répertoire, les fichier peuvent etre du type.

Répertoire: Carnet adresse

Fichier:
coordonnee1.txt
coordonnee2.txt
coordonnee2.cfg
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
17 juin 2009 à 14:31
Re-
for fich in *;do
sed "s/address /'/g" adress2_${fich%.*}.txt > adress1_${fich%.*}.txt
sed "s/rue/'/g" adress1_${fich%.*}.txt > adress2_${fich%.*}.txt
etc.
...
done
;-))
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cobra85 Messages postés 132 Date d'inscription mercredi 20 décembre 2006 Statut Membre Dernière intervention 15 novembre 2014 3
17 juin 2009 à 16:18
Merci

cela marche, comme je veux.

Encore 2 - 3 test et je mettrait sujet résolu.

MERCI
0