Analyse du nom d'un fichier en shell/Bash ...

Fermé
cobra85 Messages postés 132 Date d'inscription mercredi 20 décembre 2006 Statut Membre Dernière intervention 15 novembre 2014 - 16 sept. 2014 à 00:06
dubcek Messages postés 18744 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 4 septembre 2024 - 18 sept. 2014 à 09:04
Bonjour,

Je souhaite analyser un dossier qui comporte de fichier au format:

nom_n°1_taille1_nom.txt
nom_n°1_taille1_nom_est.txt
nom_n°2_taille1_nom.txt
nom_n°2_taille1_nom_est.txt
...

le but final étant de mettre les fichiers par paire dans une requete SQL pour les monter en base.

Je voudrais que les fichiers n°1 ayant un ID pair et impaire, que le n°2 est un ID pair et impaire dans la suite du premier, ...

Est ce possible ? Comment analyser le nom d'un fichier ?

Pour le contenu je sais mais pas pour le reste.

Merci



A voir également:

5 réponses

dubcek Messages postés 18744 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 4 septembre 2024 5 617
16 sept. 2014 à 10:48
hello
peut-on avoir un exemple avant - après ?
0
cobra85 Messages postés 132 Date d'inscription mercredi 20 décembre 2006 Statut Membre Dernière intervention 15 novembre 2014 3
17 sept. 2014 à 00:30
Salut,

J'aurais du me relire parce que tout n'est pas français dans ce que j'ai écris !!

En faite, je souhaite pouvoir mettre le contenu respectif de nom_n°X_taille1_nom.txt et nom_n°X_taille1_nom_est.txt dans une table avec le même ID.


J'ai essayé avec la commande "cat", mais il me met le contenu de l'ensemble des fichiers nom_n°X_taille1_nom.txt dans une colonne et l'ensemble des fichiers nom_n°X_taille1_nom_est.txt dans une autre colonne table.



Pour pallier à cela le temps de trouver une solution, j'ai décider de mettre le chemin de mon fichier dans la base à la place du contenu; pour cela j'ai fait le script suivant: (que j'ai tourné dans tout les sens sans succès)


for fich1 in *nom.txt; do

echo "$fich1"
var1=$fich1
done

#Liste l'ensemble des fichier ayant pour extension "est.txt"
for fich in *est.txt; do
echo "$fich"
var2=$fich


#Insertion dans la base SQL
TEMP='mysql --user=root --password=xxxxxxx <<MySCRIPT

INSERT INTO test.taille VALUES ('', '1', '$var1', '$var2', '');
MySCRIPT'done

Le code fonctionne à peut prêt, sauf qu'a un moment donné, il me croise les valeurs (en gras, les ligne fausse):

1 1 nom_n°1_taille1_nom.txt nom_n°1_taille1_nom_est.txt 0
2 1 nom_n°1_taille1_nom.txt nom_n°2_taille1_nom_est.txt 0
3 1 nom_n°2_taille1_nom.txt nom_n°1_taille1_nom_est.txt 0

4 1 nom_n°2_taille1_nom.txt nom_n°2_taille1_nom_est.txt 0

comment puis-je faire pour la premiere partie ou pour résoudre le code de la seconde pour avoir:

1 1 nom_n°1_taille1_nom.txt nom_n°1_taille1_nom_est.txt 0
2 1 nom_n°2_taille1_nom.txt nom_n°2_taille1_nom_est.txt 0
...

Merci
0
dubcek Messages postés 18744 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 4 septembre 2024 5 617
17 sept. 2014 à 10:19
comme ça ?
$ cat liste
1 1 nom_n°1_taille1_nom.txt nom_n°1_taille1_nom_est.txt 0
2 1 nom_n°1_taille1_nom.txt nom_n°2_taille1_nom_est.txt 0
3 1 nom_n°2_taille1_nom.txt nom_n°1_taille1_nom_est.txt 0
4 1 nom_n°2_taille1_nom.txt nom_n°2_taille1_nom_est.txt 0
$ awk -F _ '$2 == $5 {print}' liste
1 1 nom_n°1_taille1_nom.txt nom_n°1_taille1_nom_est.txt 0
4 1 nom_n°2_taille1_nom.txt nom_n°2_taille1_nom_est.txt 0
0
cobra85 Messages postés 132 Date d'inscription mercredi 20 décembre 2006 Statut Membre Dernière intervention 15 novembre 2014 3
17 sept. 2014 à 23:10
Salut,

Il faudrait que dans la base MySQL, les noms des fichiers ou contenus des fichiers soit disposés comme ceci:


+---+------------+--------------------------------+--------------------------------------+--+
| ID | champ1 | champ2 | champ3 | n |
+---+------------+--------------------------------+--------------------------------------+---+
| 1 | 1 |nom_n°1_taille1_nom.txt |nom_n°1_taille1_nom_est.txt | 0 |
| 1 | 1 |nom_n°2_taille1_nom.txt |nom_n°2_taille1_nom_est.txt | 0 |
| 1 | 1 |nom_n°3_taille1_nom.txt |nom_n°3_taille1_nom_est.txt | 0 |
....

0

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

Posez votre question
dubcek Messages postés 18744 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 4 septembre 2024 5 617
18 sept. 2014 à 09:04
je ne connais pas MySQL, montre le code nécéssaire à ajouter au print, sachant que le nom du fichier est $0
0