Analyse du nom d'un fichier en shell/Bash ...
cobra85
Messages postés
132
Date d'inscription
Statut
Membre
Dernière intervention
-
dubcek Messages postés 18789 Date d'inscription Statut Contributeur Dernière intervention -
dubcek Messages postés 18789 Date d'inscription Statut Contributeur Dernière intervention -
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
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:
- Analyse du nom d'un fichier en shell/Bash ...
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
- Classic shell - Télécharger - Personnalisation
5 réponses
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)
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
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
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
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 |
....
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 |
....
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question